Введение

Coroutine — это функция, которая может ожидать и синхронизировать свой процесс, а также полностью приостанавливать его. Сопрограммы работают со специальным оператором yield, который возвращает выполнение кода из функции, а затем, когда функции продолжают выполняться, выполнение начинается снова с того места, где оно было остановлено.

Начиная

Объявить сопрограмму

Сопрограммы в C# можно определить с помощью ключевого слова IEnumerator, за которым следует имя сопрограммы.

Переменная-член может быть объявлена ​​с использованием member-type, за которым следует имя переменной.

Корутина возвращает тип с оператором yield. Например, доход возвращает значение null;

//Defining Coroutine

public IEnumerator MyCoroutine()

{

yield return null;

}

Вызов сопрограммы

Сопрограммы можно вызывать с помощью StartCoroutine(Coroutine).

StartCoroutine(MyCoroutine())

Остановить сопрограмму

Сопрограммы можно вызывать с помощью StopCoroutine(Coroutine), тогда как StopAllCoroutines() можно использовать для остановки всех сопрограмм, работающих в этом экземпляре.

//Stop Coroutine

StopCoroutine(MyCoroutine());

//Stop all Coroutine

StartAllCoroutines();

Понимание сопрограмм

Сопрограммы полезны при разработке игры, но использование сопрограмм в игре не считается эффективным, если их не остановить после завершения задачи.

Методы Coroutine могут выполняться по частям с течением времени, но все процессы по-прежнему выполняются одним основным потоком. Если сопрограмма пытается выполнить трудоемкую операцию, все приложение на время зависает.

Пример программы

using UnityEngine;

using System.Collections;

public class CoroutineHandler : MonoBehaviour

{

public void Start()

{

StartCoroutine(MyCoroutine("Jon"));

}

IEnumerator MyCoroutine(string name)

{

print(name);

yield return new WaitForSeconds(5f);

print(name + "Watson");

}

}

Вывод

Джон

*ждет 5 сек*

Джон Уотсон

Вывод

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