Как приостановить выполнение метода в Unity (C#)?

Рейтинг: 0Ответов: 3Опубликовано: 27.04.2023

У меня есть метод, который надо приостановить без создания корутин и т.д.

Вот пример (не оригинальный метод):

void method()
{
    print("start");

    // задержка

    print("end");
}

Как это сделать?

P.S.: не предлагайте делать это через корутины, только без корутин

Ответы

▲ 2

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

Конкретно ваш метод будет выглядеть так:

IEnumerator method()
{
    print("start");

    // Подождать одну секунду
    yield return new WaitForSeconds(1);

    print("end");
}

А запускаем его так:

StartCoroutine(method());
▲ 2

Старт сам по себе может быть корутиной. Избегать корутину бессмысленно.

private IEnumerator Start ()
{
    Debug.Log("start");
    yield return new WaitForSeconds(1f);
    Debug.Log("end");
}
▲ -5

В данном случае один из самых простых вариантов - поставить поток в активное ожидание

System.Threading.Thread.Sleep(50); //millisec

Будьте внимательны, ведь сам поток от этого не освободит проц от нагрузки(хотя и нагрузки тут с гулькин нос), а только приостановит выполнение инструкций на 50 миллисекунд