使编辑器在循环期间响应

时间:2019-04-06 17:59:43

标签: c# unity3d

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

简单循环对我来说是完美的解决方案,但是这也会阻止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();
  }
}
  • 请不要向我推荐任何其他暂停游戏的好方法。谢谢

2 个答案:

答案 0 :(得分:0)

您可以在另一个线程上运行循环并应用事件委托(更多信息here)并注册到编辑器类中的事件处理程序,每当循环结束时,您都将在线程和编辑器中触发事件线程将收到通知,您可以添加加载文本或进度栏以向用户显示该应用程序正在运行,但像ui一样会保持响应。

如果您想将其带入新的高度,可以使用取消标记(更多信息here)来取消循环。

答案 1 :(得分:0)

您可以在更新函数中使用bool变量来停止游戏的功能,并使用协程执行等待操作。

IEnumerator SleepEntireGame(int ms)
{
    sleepGame = true;
    while(timeReached == false)
    {
        yield return null;
    }
    sleepGame = false;
}