StopCoroutine的使用

根據官方文檔的解釋:
MonoBehaviour.StopCoroutine

使用StopCoroutine時,有兩種用法:

public void StopCoroutine(string methodName);
public void StopCoroutine(IEnumerator routine);

前者是使用方法名字符串,后者是使用方法的引用。
前者可以停止第一個名字為methodName的協(xié)程;后者可以準確地停止你引用的那個協(xié)程。

常犯的錯誤是:并沒有將協(xié)程方法賦給一個引用,如下例:

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());
    }
    //一個協(xié)程,不停打印一句話
    IEnumerator DoSomething()
    {
        while (true) {
            print("Do Something Loop forever");
            yield return null;
        }
    }
}

錯誤在于StartCoroutine和StopCoroutine操作的并不是同一個協(xié)程。

正確的使用方法如下:
(1)第一種

        StartCoroutine("DoSomething");
        yield return new WaitForSeconds(2f);
        StopCoroutine("DoSomething");

(2)第二種

        IEnumerator dosomething = DoSomething();
        StartCoroutine(dosomething);
        yield return new WaitForSeconds(2f);
        StopCoroutine(dosomething);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容