StopCoroutine的使用

根据官方文档的解释:
MonoBehaviour.StopCoroutine
使用StopCoroutine时,有两种用法:

public void StopCoroutine(string methodName);
public void StopCoroutine(IEnumerator routine);
前者是使用方法名字符串,后者是使用方法的引用。
前者可以停止第一个名字为methodName的协程;后者可以准确地停止你引用的那个协程。
常犯的错误是:并没有将协程方法赋给一个引用,如下例:
using System.Collections; using UnityEngine; public class TestStopCoroutine : MonoBehaviour { // Use this for initialization IEnumerator Start () {//错误示例:并不能停止DoSomething StartCoroutine(DoSomething()); yield return new WaitForSeconds(2f); StopCoroutine(DoSomething()); } //一个协程,不停打印一句话 IEnumerator DoSomething() { while (true) { print("Do Something Loop forever"); yield return null; } } }

错误在于StartCoroutine和StopCoroutine操作的并不是同一个协程。
正确的使用方法如下:
(1)第一种
StartCoroutine("DoSomething"); yield return new WaitForSeconds(2f); StopCoroutine("DoSomething");

【StopCoroutine的使用】(2)第二种
IEnumerator dosomething = DoSomething(); StartCoroutine(dosomething); yield return new WaitForSeconds(2f); StopCoroutine(dosomething);

    推荐阅读