Unity C#
Coroutine в Unity C#: асинхронная работа с примерами
Корутины (Coroutine) в Unity — это специальные функции, которые умеют приостанавливать выполнение кода на время или до наступления условия. Они удобны для задач, которые должны идти постепенно: ожидание, анимация, циклические процессы.
Запускают корутину методом StartCoroutine, а останавливают через StopCoroutine или StopAllCoroutines.
Особенности корутин
- Асинхронность: приостанавливают выполнение кода без блокировки главного потока.
- Гибкость: подходят для таймеров, анимаций и задержек.
- Возврат IEnumerator: корутина обязана возвращать IEnumerator, что позволяет использовать yield return.
Пример кода
Корутина выводит три сообщения с паузами по 2 секунды через WaitForSeconds:
using UnityEngine;
using System.Collections;
public class CoroutineExample : MonoBehaviour
{
void Start()
{
// Запускаем коррутину
StartCoroutine(PrintMessagesWithDelay());
}
// Пример коррутины
IEnumerator PrintMessagesWithDelay()
{
Debug.Log("Сообщение 1");
yield return new WaitForSeconds(2); // Ожидание 2 секунды
Debug.Log("Сообщение 2");
yield return new WaitForSeconds(2); // Ожидание еще 2 секунды
Debug.Log("Сообщение 3");
}
}
Учти: корутины завязаны на игровой цикл Unity и зависят от кадров. Для задач, где нужна высокая точность — сетевые вызовы или работа с потоками — они не подходят.