我目前正在创建调试实用程序,其中一项功能是在短时间内强制将整个游戏挂起。
简单循环对我来说是完美的解决方案,但是这也会阻止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();
}
}
答案 0 :(得分:0)
您可以在另一个线程上运行循环并应用事件委托(更多信息here)并注册到编辑器类中的事件处理程序,每当循环结束时,您都将在线程和编辑器中触发事件线程将收到通知,您可以添加加载文本或进度栏以向用户显示该应用程序正在运行,但像ui一样会保持响应。
如果您想将其带入新的高度,可以使用取消标记(更多信息here)来取消循环。
答案 1 :(得分:0)
您可以在更新函数中使用bool变量来停止游戏的功能,并使用协程执行等待操作。
IEnumerator SleepEntireGame(int ms)
{
sleepGame = true;
while(timeReached == false)
{
yield return null;
}
sleepGame = false;
}