Coroutine
Описание
MonoBehaviour.StartCoroutine возвращает Coroutine. Экземпляры этого класса служат только ссылками на корутины и не имеют открытых свойств или функций.
Короутина — это функция, которая может приостановить свое исполнение (выход) до тех пор, пока не закончится заданные YieldInstruction.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { IEnumerator WaitAndPrint() { // suspend execution for 5 seconds yield return new WaitForSeconds(5); print("WaitAndPrint " + Time.time); }
IEnumerator Start() { print("Starting " + Time.time);
// Start function WaitAndPrint as a coroutine yield return StartCoroutine("WaitAndPrint"); print("Done " + Time.time); } }
В этом примере показан обычный запуск:
using UnityEngine; using System.Collections;
// In this example we show how to invoke a coroutine and execute // the function in parallel. Start does not need 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");
// Start function WaitAndPrint as a coroutine.
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"); } }