| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity - Run coroutines correctly in edit mode.在编辑模式正确运行Coroutines. -> 正文阅读 |
|
[游戏开发]Unity - Run coroutines correctly in edit mode.在编辑模式正确运行Coroutines. |
Unity - 在编辑模式正确运行Coroutines. 环境: Unity2019.4, Windows 10 问题: 在编辑模式下,某些Coroutine可以正确运行,但是如果IEnumerator中含有while或for循环,那么Coroutine会卡在循环中,此时只有手动更新Editor(例如在Inspector中输入,或在Scene中移动某个GameObject),Coroutine才会继续迭代。 推测原因: IEnumerator所依赖的某些刷新机制在Edit Mode下没有被自动执行。 解决: 在Monobehaviour或Editor类中使用EditorApplication.update?callback 配合EditorApplication.QueuePlayerLoopUpdate?强制更新。 实现: MonoBehaviour version:
或者采用Editor version:
总结: 此方法可以在没有进入Play模式的情况下正常运行MonoBehaviour.StartCoroutine(),即使IEnumerator中含有while或for循环,即便在Unity Editor处于后台时也可运行。 推论: 1.Coroutine底层其实仍依赖Update()方法; 2.带有[ExecuteInEditMode] Attribute的MonoBehaviour中的Update()函数,只有在Scene更新或EditorGUI更新时才会执行; 3.在非Play模式下,UnityEditor.EditorApplication.update 效果等同于Play模式下的MonoBehaviour.Update() 4.UnityEditor.EditorApplication.QueuePlayerLoopUpdate()会调用所有带有[ExecuteInEditMode] Attribuete 或runInEditMode = true 的MonoBehaviour.Update() 参考: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 0:34:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |