coroutines在unity里用处多多,用的好可以大量简化代码。
例如:
让loading场景绘制进度条不阻塞,这里异步加载关卡的函数还是必须的。
简化编写不同阶段不同行为的GameObject。
等等。
从IEnumerator和IEnumerable开始
看起来是枚举,其实在c#里的意思是迭代器(IEnumerator)和可迭代的(IEnumerable),这个不要阐述错误理解。
迭代模式(指设计模式):允许你访问一个数据项序列中的所有元素,而无须关心序列是什么类型(数组、列表、链表等)。
看一个yield return来实现的迭代器代码:
public IEnumerator GetEnumerator()
{
for ( int index = 0; index < values.Length; index ++ )
{
yield return values[(index + startingP