首页 > 解决方案 > 在循环期间使编辑器响应

问题描述

我目前正在创建一个调试实用程序,其中一个功能是在短时间内强制挂起整个游戏。

简单循环对我来说是完美的解决方案,但是这也会阻止 Unity Editor。这是一个非常明显但非常烦人的后果。

有没有办法在自定义循环期间处理编辑器事件?

void SleepEntireGame(int ms) {
  while( timeReached == false ) {
    // do nothing
    // because all i need is just hold the game in a short period.
    ;

    // I'm looking for something like this:
    UnityEditor.ProcessEvents();
  }
}

标签: c#unity3d

解决方案


您可以在另一个线程上运行循环并应用事件委托(在此处阅读更多内容)并注册到编辑器类中的事件处理程序,每当循环完成时,您将在线程中触发事件并且您的编辑器线程将收到通知,您可以添加加载文本或进度条以向用户显示应用程序正在运行,但这样用户界面将保持响应。

如果您想将其提升到下一个级别,您可以使用取消令牌(在此处阅读更多内容)也可以取消继续循环。


推荐阅读