Описание
MonoBehaviour.StartCoroutine возвращает сопрограмму. Экземпляры этого класса используются только для ссылки на эти сопрограммы и не содержат каких-либо открытых свойств или функций.
Сопрограмма — это функция, которая может приостанавливать свое выполнение (выход) до тех пор, пока заданная YieldInstruction не завершится.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
IEnumerator WaitAndPrint()
{
// приостановить выполнение на 5 секунд
yield return new WaitForSeconds(5);
print("WaitAndPrint " + Time.time);
}
IEnumerator Start()
{
print("Starting " + Time.time);
// Запускаем функцию WaitAndPrint как сопрограмму
yield return StartCoroutine("WaitAndPrint");
print("Done " + Time.time);
}
}
В этом примере показано обычное начало:
using UnityEngine;
using System.Collections;
// В этом примере мы показываем, как вызвать сопрограмму и выполнить
// функция параллельно. Для начала не нужен IEnumerator.
public class ExampleClass : MonoBehaviour
{
private IEnumerator coroutine;
void Start()
{
// - After 0 seconds, prints "Starting 0.0 seconds"
// - After 0 seconds, prints "Coroutine started"
// - After 2 seconds, prints "Coroutine ended: 2.0 seconds"
print("Starting " + Time.time + " seconds");
// Запускаем функцию WaitAndPrint как сопрограмму.
coroutine = WaitAndPrint(2.0f);
StartCoroutine(coroutine);
print("Coroutine started");
}
private IEnumerator WaitAndPrint(float waitTime)
{
yield return new WaitForSeconds(waitTime);
print("Coroutine ended: " + Time.time + " seconds");
}
}