怎么理解协同?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。可以用来控制运动、序列以及对象的行为。
大家做程序员,应该都能明白什么是主线程序,按照上面的说法,可以知道协同并非线程。
一般什么地方能使用到协同?
想要实现一些延时等待,操作完成之后在执行后面的代码的时候都可以使用协同进行实现,比如说使用www加载资源,等到加载完成在把图片拿出来使用,比如打开某个界面后两秒钟播放一个特效。
如何使用
直接上例子:
void Main()
{
StartCoroutine(WaitForOneSec());//调用协同必须使用StartCoroutine
}
IEnumerator WaitForOneSec()//返回值必须是IEnumerator
{
yield return new WaitForSeconds(1);//必须有yield return来返回,目前这句的意思是等待一秒终止后执行后面一句话。
Debug.LogError("wait over");
}
返回值类型
yield return null相当于挂起一帧,什么意思呢?如果一个协同里面有一句yield return null执行顺序为:1.调用协同函数-->2.直接进入协同函数内部执行代码---->3.执行到yield return null挂起 ----->4.执行Update-->5.执行LastUpdate--->6.