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");

(2)第二种

        IEnumerator dosomething = DoSomething();
        StartCoroutine(dosomething);
        yield return new WaitForSeconds(2f);
        StopCoroutine(dosomething);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容