В единстве, вызывая сопрограмму, включающую воспроизведение анимации внутри другой сопрограммы, заставляет анимацию воспроизводиться всего 0,1 секунды. - PullRequest
1 голос
/ 17 июня 2019

У меня есть проект, который читает входы с контроллеров 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 секунды.

Спасибо.

1 Ответ

0 голосов
/ 17 июня 2019

вы можете заставить анимацию воспроизводиться до конца на компоненте Animator вместо жесткого кодирования с сопрограммами.

вот ссылка на документацию Unity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...