У меня есть проект, который читает входы с контроллеров Arduino через Bluetooth и воспроизводит определенную анимацию в зависимости от того, какие входы он читает, входы могут быть 1 или 2 или 3, или микс из 2 или 3 из них, всего 7 входы.
каждое чтение находится внутри оператора «if» затем «else if» для проверки следующей комбинации, я читаю сопрограмму, которая воспроизводит анимацию, и проблема здесь в том, что она воспроизводит только 0,1 секунды, а затем обрезается.
Я попытался добавить условие, чтобы дождаться окончания анимации, а затем снова прочитать, но это не сработало, я добавлю небольшой пример
IEnumerator ManageConnection (BluetoothDevice device)
{
while (device.IsReading)
{
byte [] msg = device.read ();
if (msg != null)
{
string content = System.Text.ASCIIEncoding.ASCII.GetString (msg);
string [] lines = content.Split(new char[]{'\n','\r'});
//Add those lines to the scrollText
if (!animationPlaying)
{
if (lines.Contains("123"))
{
StartCoroutine(Animating(0));
audsrc.PlayOneShot(audioList[5]);
StartCoroutine(SlowDown(0.1f));
//StartCoroutine(ActiveEffect(5));
coinsCount += 1;
}
else if (lines.Contains("12"))
{
yeahCount += 1;
StartCoroutine(Animating(5));
audsrc.PlayOneShot(audioList[4]);
StartCoroutine(SlowDown(0.1f));
}
}
}
А это для анимации сопрограммы:
public IEnumerator Animating(int i)
{
animationPlaying = true;
animator.Play(animationNames[i]);
yield return new WaitForSeconds(1);
animationPlaying = false;
}
Я просто хочу, чтобы анимация воспроизводилась до конца всего за 0,1 секунды.
Спасибо.