定义一个协程函数、以及一个类:
我们如果单独的调用协程Test函数的话,不会执行任何语句。
没有任何输出。
为什么我们无法单独调用协程函数,需要用StartCoroutine()函数?
因为此时Test内的函数没有真正被执行,它只是返回了一个迭代器的对象。
我们可以将这个对象存起来,并且不通过协程调度器去执行它。
IEnumerator内部方法,属性如下。
使用IEnumerator中的MoveNext()方法。
发现竟然打印了。
再调用它的Current属性,发现打印的是yield return的返回值。
多次执行上述方法和属性。
运行结果如下。
甚至我们可以调用Current返回的值。
打印出来的为10。
协程的本质:协程函数本体(迭代器)+ 协程调度器
另一个问题来了,我们可以用MoveNext()和Current来一步步执行协程函数。但是协程函数中有n个yield return 怎么办?写n个MoveNext()和Curren吗?
注意:MoveNext()返回bool值,当协程函数内还有可以执行的内容时返回true,没有返回flase。
通过一个while循环就可以执行所有内容。
运行结果如下: