当前位置:网站首页>协程

协程

2022-06-23 12:02:00 大老婆灰原哀

老师定义:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。

官方定义:协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行后面的代码。

注意的点:

1.Unity在每一帧(Frame)都会去处理对象上的协程。Unity主要是在Update后去处理协程(检查协程的条件是否满足),但也有写特例:

2.协程跟Update()其实一样的,都是Unity每帧对会去处理的函数(如果有的话)。如果MonoBehaviour 是处于激活(active)状态的而且yield的条件满足,

就会执行协程方法的后面代码。还可以发现:如果在一个对象的前期调用协程,协程会立即运行到第一个 yield return 语句处,如果是 yield return null ,就会在同一帧再次被唤醒。

3.Unity的C#代码中一个协程的返回值通常是IEnumerator(迭代器)类型,IEnumerator接口有两个方法,分别是Current和MoveNext。我们可以简单的认为:

协程就是一个返回迭代器的函数,一开始迭代器的Current指向函数的开头,每执行一次MoveNext,Current就指向下一个yield return返回的值。迭代器方法运行到 yield return

语句时,会返回一个expression表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。

Unity在每帧做的工作就是:调用 协程(迭代器)MoveNext() 方法,如果返回 true ,就从当前位置继续往下执行。
 

原网站

版权声明
本文为[大老婆灰原哀]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_38074938/article/details/116501427