【Unity】IEnumeratorCoroutine
结论:
IEnumerator是协程的方法迭代器,
Coroutine是Unity对协程执行状态的“控制句柄”。
IEnumerator是.NET中的接口,表示一个可迭代的过程(迭代器),在Unity中,协程方法的返回值就是IEnumerator。
它里面定义了
bool MoveNext();//表示推进一步,是否还有下一项object Current;//当前这一项
void Reset();//重置到初始状态,Unity中一般不用
这三个方法/属性是 C# 中foreach背后的原理(增广背景理解)。在 Unity 中,协程方法返回的是 IEnumerator。
虽然从语法上来说并不“强制要求”写 yield,但如果不写 yield,协程会立即执行完毕,不具备“暂停”的特性,也就无法实现延迟或异步效果。实际上,写了 yield 的 IEnumerator 方法会被编译器转换为状态机(State Machine),Unity 的协程系统正是基于这一点实现逐帧执行与时间控制的。
Coroutine是UnityEngine中的类,表示一个正在执行的协程实例。
它由StartCoroutine返回,Coroutine本身没有公开的属性或状态,它只是一个控制句柄,用来取消或引用协程。