Как приостановить выполнение метода в Unity (C#)?
У меня есть метод, который надо приостановить без создания корутин и т.д.
Вот пример (не оригинальный метод):
void method()
{
print("start");
// задержка
print("end");
}
Как это сделать?
P.S.: не предлагайте делать это через корутины, только без корутин
Ответы (3 шт):
В данном случае один из самых простых вариантов - поставить поток в активное ожидание
System.Threading.Thread.Sleep(50); //millisec
Будьте внимательны, ведь сам поток от этого не освободит проц от нагрузки(хотя и нагрузки тут с гулькин нос), а только приостановит выполнение инструкций на 50 миллисекунд
Я бы все же делал через корутины, потому что они действительно не блокируют поток, как уже указали в комментариях.
Конкретно ваш метод будет выглядеть так:
IEnumerator method()
{
print("start");
// Подождать одну секунду
yield return new WaitForSeconds(1);
print("end");
}
А запускаем его так:
StartCoroutine(method());
Старт сам по себе может быть корутиной. Избегать корутину бессмысленно.
private IEnumerator Start ()
{
Debug.Log("start");
yield return new WaitForSeconds(1f);
Debug.Log("end");
}