Единство, Coroutine действует по-другому на Android - PullRequest
0 голосов
/ 01 мая 2019

Следующий код ниже работает по-другому на Android, в то время как в редакторе он работает так, как предполагалось:

 private IEnumerator CountTo(int target)
 {
     yield return new WaitForSeconds(0.5f);

     int start = 0;

     do
     {
         ScoreText.text = string.Format(scoreText, start);

         if (start != 0)
         {
             SoundManager.instance.Play(ScoreSound, default, 0.4f);
         }

         start++;

         yield return new WaitForSeconds(0.33f);
     }
     while (start <= target);
 }

В редакторе, когда он вызывается, он ждет 0,5 секунды перед запуском (чтобы дождаться воспроизведения звука завершения уровня), считается до target один за другим с игрой ScoreSound каждый раз (кроме первого), когда счет изменения.

На Android он сначала проигрывает все необходимые ScoreSound звуки и только тогда МЕДЛЕННО (почти как с лагами) меняет счет пользовательского интерфейса. В отладчике, шаг за шагом все работает нормально. При использовании профилировщика FPS стабилен, когда это происходит.

Есть идеи, что может быть причиной этого?

Спасибо!

1 Ответ

0 голосов
/ 01 мая 2019

Хорошо, ребята, извините, я понял это, ответ на самом деле очень глупый ... Так что получается, что это происходило из-за глубины поля стека постобработки, он был активирован во время фазы завершения и когдаCountTo был вызван, поэтому кажется, что эти двое каким-то образом мешали друг другу, поэтому я получил то, что получил.

Извините снова!Спасибо!

...