有没有办法在C#中的函数中的两个语句之间延迟执行?

时间:2019-05-06 03:46:43

标签: c# unity3d

我目前正在统一控制台中创建一个“游戏”。在这个游戏中,我让控制台显示我想对玩家说的话,但是由于控制台并不是用于类似这样的事情的,因此它变得越来越拥挤。在我告诉玩家我正确答案的功能中,我还在重新启动游戏。但是,这会导致所有对话都立即加载,而这并没有给玩家提供看到我对先前游戏的回应的机会。

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

我希望要么让游戏延迟StartGame()? Debug.Log函数执行后,该函数(包含新游戏开始的所有对话)。或者,如果可能,请玩家按下按钮以执行新游戏。

2 个答案:

答案 0 :(得分:3)

我不太熟悉统一脚本。但基于这个answer形式的统一论坛

您可以在任何MonoBehaviour中使用协程进行操作:

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

     // Code to execute after the delay
 }

您可以使用例如StartCoroutine(ExecuteAfterTime(10));调用它

请注意,它将执行异步操作,因此将需要等待它完成的所有操作都放在协程中。

答案 1 :(得分:-1)

也许您可以使用InvokeRepeating