我在这里四处寻找让我的脚本等待几秒钟并找到人们推荐的this article的方法。我拿了一些这些代码并在我的游戏中使用它来让它等待,但它不会像我想要的那样动作。我把它放在两个Debug.Log行之间,但它等待指定的时间,然后一次记录两个东西,而不是在第一个触发后等待。
static void Waiter(){
waitHandle.WaitOne ();
}
Debug.Log (choice);
new Thread (Waiter).Start ();
Thread.Sleep (5000);
waitHandle.Set ();
Debug.Log (enemyChoice);
答案 0 :(得分:3)
要在Unity中等待,请使用协程和WaitForSeconds
。您也可以在Time.deltaTime
或Time.time
中使用协同程序,但最简单的方法是使用WaitForSeconds
。请注意,如果您等待Thread.Sleep
,您的整个程序将会冻结。不要这样做,因为UI也不会响应。
void Start()
{
StartCoroutine(doSomethingThenWait());
}
IEnumerator doSomethingThenWait()
{
UnityEngine.Debug.Log("Before Waiting");
//Wait for 2 Seconds
yield return new WaitForSeconds(2);
UnityEngine.Debug.Log("After Waiting");
}