赞
踩
协程可以分为两部分:(1)协程函数本体(分步);(2)协程调度器(分时)
协程本体就是一个能够中间暂停返回的函数
协程调度器是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数
Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法
(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定义的一些规则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。