Как добиться функциональности Thread.Sleep () в Unity Script? - PullRequest
1 голос
/ 19 марта 2019

Я создаю приложение дополненной реальности на основе vuforia. Мне нужно добавить сон для некоторых частей сценариев, но я не могу этого достичь.

1 Ответ

2 голосов
/ 19 марта 2019

Не видя ваш код / ​​реальную проблему, трудно дать ответ, который выходит за рамки, а не очень общий:

Когда вы хотите использовать какую-либо функцию ожидания в Unity, вы должны использовать Сопрограммы используя, например, WaitForSeconds , WaitUntil , WaitWhile .

private IEnumerator DoSomething()
{
    // doing something

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

    // do something else
}

вы запускаете это из другого метода (внутри скрипта MonoBehaviour)используя

StartCoroutine(DoSomething());

Конечно, вы также можете просто подождать в методе Update MonoBehaviours, например, что-то вроде

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;
}

, но вы уже видите, как "красиво" этополучает ...

...