Unity协程(Coroutine)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity协程(Coroutine)相关的知识,希望对你有一定的参考价值。
参考技术A 1、协程不是线程,也不是异步执行的。2、协程和 MonoBehaviour 的 Update函数一样,也是在MainThread中执行的。
3、使用协程你不用考虑同步和锁的问题。
4、协程可以被yield return在当前帧进行打断,到下一帧后可以继续从被打断的地方继续运行。
5、协程是每帧的LateUpdate()后去运行的。
1、一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口(亦即,必须以某种方式返回IEnumerator object)。
2、IEnumerator object具体实现了iterator(通过MoveNext(),Reset(),Current)。
3、从这两个接口的用词选择上,也可以看出其不同:IEnumerable是一个声明式的接口,声明实现该接口的class是“可枚举(enumerable)”的,但并没有说明如何实现枚举器(iterator);IEnumerator是一个实现式的接口,IEnumerator object就是一个iterator。
4、IEnumerable和IEnumerator通过IEnumerable的GetEnumerator()方法建立了连接,client可以通过IEnumerable的GetEnumerator()得到IEnumerator object,在这个意义上,将GetEnumerator()看作IEnumerator object的factory method也未尝不可。
1、在程序中调用StopCoroutine()方法只能终止以字符串形式启动(开始)的协程
2、多个协程可以同时运行,它们会根据各自的启动顺序来更新
3、协程可以嵌套任意多层
4、如果你想让多个脚本访问一个协程,那么你可以定义静态的协程
5、协程不是多线程(尽管它们看上去是这样的),它们运行在同一线程中,跟普通的脚本一样
6、如果你的程序需要进行大量的计算,那么可以考虑在一个随时间进行的协程中处理它们
7、IEnumerator类型的方法不能带ref或者out型的参数,但可以带被传递的引用
8、目前在Unity中没有简便的方法来检测作用于对象的协程数量以及具体是哪些协程作用在对象上
以上是关于Unity协程(Coroutine)的主要内容,如果未能解决你的问题,请参考以下文章