waitforendofframe - woodelf-treetop/rcwiki GitHub Wiki

1、从官方的执行顺序表中可以看到,WaitForEndOfFrame是在一个显示帧的最后执行:https://www.cnblogs.com/hont/p/6477384.html

​ 理想情况下,如果协程和Update都在运行,WaitFor.. 和 Update 应该是交替执行

2、实测发现有如下意外:

​ 1) 在协程启动的第一帧,Update执行两次之后,才执行 WaitFor..

​ 2) 如果切出游戏再切进来,发现 WaitFor.. 执行两次之后才执行 Update,猜测切出之后以 WaitFor.. 收尾,切回来之后,它又先执行了一次

​ 3) 一直跑着游戏,有微小概率(非常小,跑5分钟能出现一次)出现 WaitFor.. 执行两次或三次之后,再执行 Update。这违背 unity 给出的官方说明,可以认为是 unity 的 bug。

3、yield return null 在实测中(除了在第一帧会让Update执行两次)并没有出现意外,始终跟 Update 交替执行,它的实现机制可能是Update有密切关系。

结论:

​ 1、yield return new WaitForEndOfFrame() 与 Update 的交替执行顺序,并不总是成立。yield return null 与 Update 基本存在交替执行顺序。

​ 2、不要依赖协程跟 Update 的交替执行的顺序,我们总有别的解决方式

其他可能有帮助的网页:

https://www.jianshu.com/p/40ac387871d3

⚠️ **GitHub.com Fallback** ⚠️