Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

MonoBehaviour.StartCoroutine

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function StartCoroutine(routine: IEnumerator): Coroutine;
public Coroutine StartCoroutine(IEnumerator routine);

Параметры

Описание

Запуск корутины.

Выполнение корутины может быть приостановлено в любой точке оператором yield. Возвращаемое yield значение определяет когда корутина будет возобновлена. Корутины - прекрасное средство когда моделируется поведение, растянутое на несколько кадров. Корутины практически не имеют накладных расходов. Функция StartCoroutine всегда возвращает управление немедленно, однако вы можете получить результат. Он будет ждать пока корутина не закончит выполнение.

Когда используете JavaScript нет необходимости использовать StartCoroutine - компилятор сделает это для вас. Когда вы пишете на C#,- вы должны вызывать StartCoroutine.

	// In this example we show how to invoke a coroutine and continue executing
	// the function in parallel.

function Start() { // - After 0 seconds, prints "Starting 0.0" // - After 0 seconds, prints "Before WaitAndPrint Finishes 0.0" // - After 2 seconds, prints "WaitAndPrint 2.0" print ("Starting " + Time.time); // Start function WaitAndPrint as a coroutine. And continue execution while it is running // this is the same as WaitAndPrint(2.0) as the compiler does it for you automatically StartCoroutine(WaitAndPrint(2.0)); print ("Before WaitAndPrint Finishes " + Time.time); }

function WaitAndPrint (waitTime : float) { // suspend execution for waitTime seconds yield WaitForSeconds (waitTime); print ("WaitAndPrint "+ Time.time); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Start() { print("Starting " + Time.time); StartCoroutine(WaitAndPrint(2.0F)); print("Before WaitAndPrint Finishes " + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint " + Time.time); } }

Другой пример:

	// In this example we show how to invoke a coroutine and wait until it 
	// is completed
	
	function Start() {
		// - After 0 seconds, prints "Starting 0.0"
		// - After 2 seconds, prints "WaitAndPrint 2.0"
		// - After 2 seconds, prints "Done 2.0"
		print ("Starting " + Time.time);
		// Start function WaitAndPrint as a coroutine. And wait until it is completed.
		// the same as yield WaitAndPrint(2.0);
		yield StartCoroutine(WaitAndPrint(2.0));
		print ("Done " + Time.time);
	}

function WaitAndPrint (waitTime : float) { // suspend execution for waitTime seconds yield WaitForSeconds (waitTime); print ("WaitAndPrint "+ Time.time); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { IEnumerator Start() { print("Starting " + Time.time); yield return StartCoroutine(WaitAndPrint(2.0F)); print("Done " + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint " + Time.time); } }

public function StartCoroutine(methodName: string, value: object = null): Coroutine;
public Coroutine StartCoroutine(string methodName, object value = null);
public function StartCoroutine(methodName: string, value: object = null): Coroutine;
public Coroutine StartCoroutine(string methodName, object value = null);

Параметры

Описание

Запуск корутины с именем methodName.

В большинстве случаев вы будете использовать вариант StartCoroutine приведенный выше. Однако StartCoroutine с указанием имени метода строкой позволяет вам использовать StopCoroutine с указанием конкретного имени метода. Недостаток - строковая версия имеет большие накладные расходы при вызове корутины и может быть передан только один параметр.

	// In this example we show how to invoke a coroutine using a string name and stop it

function Start () { StartCoroutine("DoSomething", 2.0); yield WaitForSeconds(1); StopCoroutine("DoSomething"); }

function DoSomething (someParameter : float) { while (true) { print("DoSomething Loop"); // Yield execution of this coroutine and return to the main loop until next frame yield; } }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { IEnumerator Start() { StartCoroutine("DoSomething", 2.0F); yield return new WaitForSeconds(1); StopCoroutine("DoSomething"); } IEnumerator DoSomething(float someParameter) { while (true) { print("DoSomething Loop"); yield return null; } } }