协程
一:什么是协同程序。
协同程序,即主程序在运行的同时开启另外一段处理逻辑,类似于开启一个线程。
注意:必须在MonoBehaviour
两种开启方法:
I:StartCoroutine(string methodName);
最多只能传递一个参数,比较消耗性能。
销毁:开启线程并在线程结束前终止线程(自己销毁本身)
II:StartCoroutine(IEnumerator routinue);
只能等待线程的终止而不能随时终止
销毁:StopAllStoroutines(),
协同程序所在的gameObject 的 active属性设置为false,再次设置active为true,协同程序将不会再次开启。
如果将协同程序所在的脚本的enable设置为false则不会消失。这是因为协同程序被开启后作为一个线程在运行,
而MonoBehaviour也是一个线程,他们成为互不干扰的的模块。他们公用一个对象,只有在这个对象不可见才能同时终止这两个线程。然而为了
管理我们额外开启的线程,Unity3D将协同程序的调用放在了MonoBehaviour中,这样在编程时就可以方便的调用指定的脚本中的协同程序,而不是
无法去管理,特别是对于只根据方法名来判断线程的方式在多人开发中很容易出错,这样的设计是为了保证对象,脚本的条件管理,并防止重名。
yield :代表先执行完本局语句(不管时间多长),或者执行完本yield方法调用,才执行后面的语句。
看下面的例子,数字代表着执行的顺序