Сделать редактор отзывчивым во время цикла - PullRequest
0 голосов
/ 06 апреля 2019

В настоящее время я создаю утилиту отладки, и одной из функций является принудительное зависание всей игры за короткий период.

Простой цикл - идеальное решение для меня, однако это также блокирует 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 голосов
/ 07 апреля 2019

Вы можете использовать переменную bool для использования в функциях обновления, чтобы остановить функциональность вашей игры, и использовать сопрограмму для ожидания.

IEnumerator SleepEntireGame(int ms)
{
    sleepGame = true;
    while(timeReached == false)
    {
        yield return null;
    }
    sleepGame = false;
}
0 голосов
/ 07 апреля 2019

Вы можете запустить свой цикл в другом потоке и применить делегирование событий (подробнее здесь ) и зарегистрироваться в обработчике событий в вашем классе редактора, когда цикл завершится, вы запустите событие в своем потоке и ваш поток редактора будет уведомлен, вы можете добавить загрузочный текст или индикатор выполнения, чтобы показать пользователю, что приложение работает, но пользовательский интерфейс останется отзывчивым.

Если вы хотите поднять его на следующий уровень, вы можете использовать токен отмены (подробнее здесь ), чтобы иметь возможность также отменить цикл от продолжения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...