协程的本质
1.协程函数本体:就是一个能中间暂停的返回函数,如果不通过开启协程方法执行协程,Unity的协程调度器是不会帮我们管理协程函数的,但是我们可以手动执行
例如:
cs
class TestClass
{
}
IEumerator Test()
{
printf("第一次执行");
yield return 1;
printf("第二次执行");
yield return 2.3f;
printf("第三次执行");
yield return "222";
printf("第四次执行");
yield return new TestClass();
}
private void Start()
{
IEumerator ie = Test();
ie.MoveNext();
print(ie.Current);//可以得到yield return返回的内容
}
输出结果:
cs
第一次执行
1
2.协程调度器:是unity内部实现的,会在对应时机帮我们执行协程函数
Unity只实现了协程调度部分,协程本质上就是一个C#迭代器方法
C#看到迭代器函数和yield return 语法糖,就会把一个函数变成"几部分",我们可以通过迭代器 从上到下遍历这"几部分",进行执行,就可以将一个函数的逻辑拆分成几部分进行执行
而协程调度器就是依据迭代器函数返回的内容进行之后的处理,例如yield return null,当调用开启协程函数后,Unity拿到了这个协程的迭代器内部就会等待一帧执行yield return null下一步的逻辑