Unity,协程在Android上的行为有所不同

时间:2019-05-01 16:59:04

标签: c# android unity3d coroutine

下面的下一个代码在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声音,然后才缓慢(几乎像滞后一样)更改UI得分。在调试器中,一步一步地,一切正常。使用事件探查器,FPS在发生这种情况时很稳定。

有什么想法会导致这种情况吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,伙计们,对不起,我想出来了,答案实际上确实很愚蠢...因此事实证明,这是由于后期处理堆栈的景深而引起的,它是在“关卡完成”阶段以及CountTo被称为,所以似乎这两个以某种方式相互干扰,所以我已经拥有了。

再次抱歉!谢谢!