[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可以完全上位替代协程
分类:
Unity
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?