WaitHandle和Thread.Sleep出错

时间:2017-05-28 21:51:31

标签: c# unity3d unity2d

我在这里四处寻找让我的脚本等待几秒钟并找到人们推荐的this article的方法。我拿了一些这些代码并在我的游戏中使用它来让它等待,但它不会像我想要的那样动作。我把它放在两个Debug.Log行之间,但它等待指定的时间,然后一次记录两个东西,而不是在第一个触发后等待。

static void Waiter(){
    waitHandle.WaitOne ();
}
Debug.Log (choice);

new Thread (Waiter).Start ();   
Thread.Sleep (5000);
waitHandle.Set ();

Debug.Log (enemyChoice);

1 个答案:

答案 0 :(得分:3)

要在Unity中等待,请使用协程和WaitForSeconds。您也可以在Time.deltaTimeTime.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");
}