协同

1、协同必须在 MonoBehaviour 继承类中启动

2、协同定义随便,只要在 Unity 引擎内的什么类中都可以定义

3、协同一旦启动它会立即执行协同函数的第一段,所以你尽量不要把负荷很大的代码写在第一段里

4、协同除了第一次启动会立即执行外,其他时候都是在 Update 函数之后

5、协同是假的多线程,所以它可以无条件访问成员级变量和函数,无需线程互斥

6、协同函数中定义变量是协同函数全局的

7、协同函数中的代码都是过程化的,没有面向对象的概念

8、不要在循环中调用协同方法

9、事件函数也可以改写成协同方法

  1. IEnumerator Start()
  2. {
  3. }
  4. IEnumerator OnTriggerEnter(Collider col)
  5. {
  6. }

10、在协同中可以调用其他协同方法

  1. StartCoroutine(Run());
  2. yield return StartCoroutine(Run());