U2L8——协同程序原理
U2L8——协同程序原理
协同程序原理
协程本质 就是利用 C#的迭代器函数“分步执行”的特点 加上 协程调度逻辑 实现的一套分时执行函数的规则
关于协程的介绍和使用相关,在协同程序里
协程的本质
协程可以分成两部分:
- 协程函数本体:就是一个可以中间暂停返回的函数
- 协程调度器:是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数
Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法
可以简单把协程理解为迭代器函数
C#看到迭代器函数和yield return
语法糖,就会把原本是一个“函数”变成“几部分”
我们就可以提供迭代器,从上到下遍历这几部分进行执行
而协程调度器就是利用迭代器函数返回的内容来进行之后的处理
比如Unity中的协程调度器,根据yield return
返回的内容,决定了下一次在何时继续执行迭代器函数中的“下一部分”
理论上来说,我们可以利用迭代器函数的特点,自己实现协程调度器来取代Unity自带的调度器
协程本体是迭代器方法的体现
协程函数本体
如果我们不通过 开启协程方法执行协程
Unity的协程调度器是不会帮助我们管理协程函数的
但是我们可以自己执行迭代器函数内容
1 | public class TestClass |
通过我们自己分步执行迭代器函数,可以发现协程本质就是一个迭代器方法的体现,只不过Unity有自己的协程调度器来执行协程
协程调度器
继承MonoBehaviour
后 开启协程,相当于是把一个协程函数(迭代器)放入一个Unity的协程调度器中帮助我们管理进行执行
具体的yield return
后面的规则 也是Unity定义的一些规则
1 | Coroutine c1 = StartCoroutine(Test()); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!