Есть ли способ поставить задержку выполнения между двумя операторами в функции в C #? - PullRequest
0 голосов
/ 06 мая 2019

Я сейчас создаю «игру» в консоли Unity.В этой игре у меня есть консоль, показывающая то, что я хочу сказать игроку, но поскольку консоль не предназначена для таких вещей, она наполняется текстом.В своей функции, когда я говорю игроку, что я правильно понял ответ, я также перезагружаю игру.Но это приводит к загрузке всего диалога одновременно, что не дает игроку возможности увидеть мой ответ на предыдущую игру.

else if (Input.GetKeyDown(KeyCode.Return))
        {
            Debug.Log("I'm a genius :)");
            StartGame();
        }

Я надеялся либо задержать игру, либо StartGame ();функция (которая содержит весь диалог для запуска новой игры) после выполнения функции Debug.Log.Или, если возможно, попросите игрока нажать кнопку, чтобы запустить новую игру.

Ответы [ 2 ]

3 голосов
/ 06 мая 2019

Я недостаточно знаком со сценариями в единстве.но на основе этого ответа формы единства форума

Вы можете сделать это с сопрограммами в любом MonoBehaviour:

 IEnumerator ExecuteAfterTime(float time)
 {
     yield return new WaitForSeconds(time);

     // Code to execute after the delay
 }

Вы можете вызвать его, например, с помощью StartCoroutine (ExecuteAfterTime (10));

Обратите внимание, что он будет выполняться асинхронно, поэтому поместите все, что ожидает его выполнения, в сопрограмму.

0 голосов
/ 06 мая 2019

Может быть, вы могли бы использовать InvokeRepeating

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