如何在Unity脚本中实现Thread.Sleep()功能?

时间:2019-03-19 17:24:24

标签: unity3d vuforia thread-sleep

我正在构建基于vuforia的增强现实应用程序。我需要在脚本的某些部分添加睡眠,但是我无法实现。

1 个答案:

答案 0 :(得分:2)

在没有看到您的代码/实际问题的情况下,很难给出比通用的答案还要深的答案:

每当您想要Unity中的某种等待功能时,都应使用Coroutines,例如WaitForSecondsWaitUntilWaitWhile等。

private IEnumerator DoSomething()
{
    // doing something

    // waits 5 seconds
    yield return new WaitForSeconds(5);

    // do something else
}

您可以使用

从其他方法(在MonoBehaviour脚本内部)开始
StartCoroutine(DoSomething());

当然,也可以简单地在MonoBehaviours的Update方法中等待,例如像

private float timer;
private bool activateSleep;

private void Update()
{
    if(activateSleep)
    {
        timer += Time.deltaTime;

        if(timer <= 0)
        {
            activateSleep = false;
        }
        else
        {
            // return so the rest of Update is not done
            return;
        }
    }

    // Otherwise do what you would usually do
}

public void ActivateSleep(float forSeconds)
{
    timer = forSeconds;
    activateSleep = true;
}

但是您已经看到了如何“美丽”……