Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public void StopCoroutine(string methodName);

public void StopCoroutine(IEnumerator routine);

public void StopCoroutine(Coroutine routine);

Параметры

methodName Имя сопрограммы.
routine Имя функции в коде, включая сопрограммы.

Описание

Остановка первой сопрограммы с именем methodName или сопрограммы, хранящейся в routine, работающей с этим поведением.

StopCoroutine принимает один из трех аргументов, указывающих, какая сопрограмма останавливается:

  • Строковая функция, именующая активную сопрограмму.
  • Переменная IEnumerator, использованная ранее для создания сопрограммы.
  • Coroutine для остановки созданной вручную Coroutine.

Примечание. Не смешивайте три аргумента. Если в качестве аргумента в StartCoroutine используется строка, используйте строку в StopCoroutine. Точно так же используйте IEnumerator как в StartCoroutine, так и в StopCoroutine. Наконец, используйте StopCoroutine с Coroutine, используемой для создания.

В примере CS используется тип IEnumerator.

using UnityEngine; using System.Collections; public class Example : MonoBehaviour { // сохраняем копию выполняющегося скрипта private IEnumerator coroutine; // Используйте это для инициализации void Start() { print("Starting " + Time.time); coroutine = WaitAndPrint(3.0f); StartCoroutine(coroutine); print("Done " + Time.time); } // вывод в консоль каждые 3 секунды. // yield вызывает паузу WaitAndPrint каждые 3 секунды public IEnumerator WaitAndPrint(float waitTime) { while (true) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint " + Time.time); } } void Update() { if (Input.GetKeyDown("space")) { StopCoroutine(coroutine); print("Stopped " + Time.time); } } }

В следующем примере cs показано, как можно использовать StopCoroutine(Coroutine).

using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleClass : MonoBehaviour { void Start() { StartCoroutine(coroutineA()); } IEnumerator coroutineA() { // ждем 1 секунду yield return new WaitForSeconds(1.0f); Debug.Log("coroutineA() started: " + Time.time); // ждем еще 1 секунду и затем создаем b yield return new WaitForSeconds(1.0f); Coroutine b = StartCoroutine(coroutineB()); yield return new WaitForSeconds(2.0f); Debug.Log("coroutineA() finished " + Time.time); // Ожидалось, что B() будет выполняться в течение 10 секунд // но был закрыт здесь после 3.0f StopCoroutine(b); yield return null; } IEnumerator coroutineB() { float f = 0.0f; float start = Time.time; Debug.Log("coroutineB() started " + start); while (f < 10.0f) { Debug.Log("coroutineB(): " + f); yield return new WaitForSeconds(1.0f); f = f + 1.0f; } // Предназначен для обработки выхода из этой сопрограммы. // Однако coroutineA() отключает coroutineB(). Этот // означает, что следующие строки не вызываются. float t = Time.time - start; Debug.Log("coroutineB() finished " + t); yield return null; } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3