Unity协同

协同注意事项:

1.协同的返回值类型必须是IEnumerator

2.协同的参数不能加关键字ref或者out

3.在c#脚本中必须使用StartCoroutine来启动协同

4.yield语句要用yield return来代替

5.在函数Update和FixedUpdate中不能使用yield语句,但是可以启动协同.如果在Update中启动协同,会可能出现不等这个协同执行就已经再次启动这个协同了。

yield语句在协同中的典型用法:

yield return null:                                                    

等待下一帧中的Update执行完毕之后再运行

yield return new WaitForSeconds(10):           

延迟10秒后在继续执行

yield return new WaitForFixedUpdate():       

 等待所有脚本中的FixedUpdate函数结束后再继续执行 

yield return new WaitForEndOfFrame():        

等待该帧中的所有Camrea和GUI对象渲染完毕,在帧被显示到屏幕上之前恢复执行前面的代码

yield return new WWW(url):                               

等待url下载完成后再继续执行

yield return StartCoroutine(MyFunc()):          

等待协同MyFunc结束后再执行

在协同函数中,yield语句就像是一个红绿灯,在遇到yield语句之前都是绿灯,协同函数正常按顺序执行,但是碰到yield语句时则亮红灯,协同程序此时停止执行,当中断指令结束后红灯熄灭,绿灯变亮,协同函数继续执行余下的代码。

IEnumerator CoroutineProcedure(){
print("绿灯");
print("顺序执行");
print("亮红灯");
yield return new WaitForSeconds(2);
等待两秒
print("绿灯");
}
使用示例代码

void Update(){
StartCoroutine(wait());
}
IEnumerator wait(){
yield renturn new WaitForSeconds(5s);
}
这段代码是启动一个wait的协同函数,这个函数是等待5秒

你可能感兴趣的:(Unity)