Unity协同

来源:互联网 发布:标准人体尺寸测量数据 编辑:程序博客网 时间:2024/06/06 10:51

协同注意事项:

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秒

1 0