1、协程的本质
协程可以分为两部分:(1)协程函数本体(分步);(2)协程调度器(分时)
协程本体就是一个能够中间暂停返回的函数
协程调度器是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数
Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法
2、协程本体是迭代器方法的体现
(1)协程函数本体
如果我们不通过开启协程方法StartCorcutine()执行协程,那么Unity的协程调度器是不会帮助我们管理协程函数的(StartCorcutine执行的协程会遵循Unity的协程调度规则,即不同的返回值在不同的时刻执行),但是我们可以自己执行迭代器函数内容
IEnumerator Test() {
print("第1次执行");
yield return 1;
print("第2次执行");
yield return 2;
print("第3次执行");
yield return 3;
print("第4次执行");
yield return new TestClass(10);
}
// 直接执行Test()是不会有任何结果的
IEnumerator ie = Test();
ie.MoveNext(); // 打印"第1次执行"
print(ie.Current()); // 打印第一次yield return的返回值 1
......
// 最后一次执行时
TestClass tc = ie.Current as TestClass;
// MoveNext()的返回值代表是否到了结尾
// 当Test()执行完后,MoveNext()会返回一个false,因此可以通过while循环遍历
while(ie.MoveNext()){
print(ie.Current());
}
(2)协程调度器
继承MonoBehavior后开启协程,相当于是把一个协程函数(迭代器)放入Unity的协程调度器中帮助我们管理进行执行,具体的 yield return 后面的规则也是Unity定义的一些规则

本文深入探讨Unity中的协程机制,解释协程的本质是能够暂停和恢复的迭代器方法,以及协程调度器如何管理协程执行。通过实例展示了如何手动执行和使用Unity的协程调度器运行协程,强调了StartCoroutine在遵循Unity协程规则中的作用。
6321

被折叠的 条评论
为什么被折叠?



