Unity协程

yield return null; ll下一帧再执行后续代码


yield return 0; l/下一帧再执行后续代码


yield return 6;//(任意数字)下一帧再执行后续代码yield break;//直接结束该协程的后续操作


yield return asyncOperation;//等异步操作结束后再执行后续代码


yield return StartCoroution(/*某个协程*/;//等待某个协程执行完毕后再执行后续代码yield return wwW();//等待www操作完成后再执行后续代码


yield return pew WaitForEndOfFrame();/等待帧结束.等待直到所有的摄像机和GUI被渲染完成后,在该帧显示在屏幕之前执行


yield return WaitForFixedUpdate();//等待下一次FixedUpdate开始时再执行后续代码


yield return new WaitUntil()//将协同执行直到当输入的参数(或者委托)为true的时候


yield return new WaitWhile()//将协同执行直到当输入的参数(或者委托)为false的时候


yield return new WaitForSeconds(0.3f;/等待0.3秒,一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧之后(这里时间会受到Time.timeScale的影响);


yield return new WaitForSecondsRealtime(0.3f;/等待0.3秒,一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧后(这里的时间不受到Time.timeScale的影响);

1.IEnumerator+yield强大的迭代器
IEnumerator:是一个函数对象的容器,可以存放n个函数代码的容器
yield:关键字,可以帮你抽出函数代码,生成一个函数,放到我们的IEnumerator容器里面;
IEnumerator可以依次执行容器里的函数
IEnumerator.MoveNext执行完当前函数,移动到下一个,执行完容器的所有函数后,会返回一个false;
IEnumerator.Current每个函数执行完成之后的返回

2.模拟协程
模拟协程就是将IEnumerator容器里的函数每隔一帧触发一次

3.协程等待时间的原理
在等待时线程是没有被真正意义上的等待,Updata还是在不断的往前走,他会在时间到达后才会继续走IEnumerator.MoveNext,继续执行下面的函数;

模拟一个协程

模拟协程等待时间

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值