Unity协同

本文详细介绍了Unity中的协同(Coroutine)使用注意事项,包括协同函数的返回值类型、参数限制、启动方式以及yield语句的常见应用。通过yield return,可以实现等待下一帧、延迟执行、等待固定更新、等待帧结束和等待下载完成等功能。协同函数中的yield语句起到控制执行流程的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

协同注意事项:

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秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值