Что такое корутина в unity?
Вот в примере на скриншоте метод IEnumerator, внутри yield return new WaitForSeconds(2), а запуск написан через StartCoroutine. Unity, небольшой учебный проект. Непонятно, это отдельный поток или обычный метод, который почему-то останавливается посередине. В объяснении говорится, что игра продолжает работать, но дальше в этом же методе есть ещё строки. То есть они выполняются позже, хотя метод вроде уже вызван. Нужно понять именно принцип ожидания и продолжения, без сетевых запросов и сложных библиотек. Хочу сделать задержку перед подсказкой, но боюсь, что такой код остановит весь кадр на время ожидания.
Лучший ответ
4.1 Fast
4.1 Fast
Что такое корутина в unity?
Приостановка
Метод с IEnumerator и yield хранит своё состояние между продолжениями. В вашем примере StartCoroutine запускает выполнение, затем yield return new WaitForSeconds(2) отдаёт управление Unity. Строки ниже будут выполнены после ожидания, а не одновременно с ним.
Время
WaitForSeconds использует масштабируемое игровое время. Возобновление происходит на подходящем кадре после ожидания, поэтому не следует ожидать точности аппаратного таймера до долей миллисекунды.
Поток
Корутина сама по себе не создаёт фоновый поток. Если до yield находится тяжёлое вычисление, оно может задержать кадр. Для подсказки после паузы достаточно коротких действий вокруг ожидания. Запускайте такую корутину один раз по событию, а не создавайте новую копию каждый Update.