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 и зависят от кадров. Для задач, где нужна высокая точность — сетевые вызовы или работа с потоками — они не подходят.