[Unity]协程

Unity协程

  • yield return null暂停一帧
  • yield return new WaitForSeconds(1.0f)暂停一秒
  • yield return StartCoroutine()等这个新协程结束
  • yield return new WaitForEndOfFrame()等待到帧的末尾
  • MonoBehaviour被Disable的时候协程会继续执行
  • 在协程执行耗时操作会阻塞主线程,因为本质上协程也是游戏主循环的一部分,游戏主循环是单线程运行的
    • 在耗时算法中拆几个yield return null分到几帧去执行
    • 如果没有使用Unity API(其他线程不可以访问Unity API),在异步线程执行操作
  • 协程的本质是一个能暂停返回的函数,协程调度是实现在MonoBehaviour的生命周期中的,协程本身的原理用的是C#迭代器方法
  • Unity的协程只允许返回继承自YieldInstruction的对象或者null,返回其他对象当做null处理

C#的迭代器方法

  • 返回值要求返回IEnumerator,调用时返回一个迭代器,调用MoveNext执行到yield返回一次
  • 调用Current返回当前的返回值
  • IEnumerator<T>只能返回T类型的对象

UniTask可以完全上位替代协程

UniTask文档

posted @   被窝儿  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示