Unity协程StopCoroutine()的具体用法

第一次写博客,好紧张~

最近在学习Unity的协程,发现网上一般搜到的停止协程的方法大多数是:

1)StopCoroutine(string methodName)

根据协程名字开启和关闭,最多只能传递一个参数

当同一个协程被开启了多次,关闭时候将全部被关闭,即使传入了不同的参数,也是全部被关闭,因为StopCoroutine(string methodName) 关闭时候不能传参数。

例如:

Unity协程StopCoroutine()的具体用法_第1张图片Unity协程StopCoroutine()的具体用法_第2张图片

例如这种情况,将关闭三个协程

2)StopAllCoroutines()

该方法将关闭当前脚本中所有的协程

3)将挂载该协程脚本的游戏对象的SetActive设为false,但是再次设为true时将无法开启

      如果只是把挂载的脚本的enable设为false,将不会关闭协程

今天我想说的是Unity不知道5.几以后新增的两个扩展方法

1)StopCoroutine(IEnumerator routine)

     使用该方法关闭协程,直接将协程的方法名传入进来是关闭不了的,例如,


   这样是是关闭不了该协程的,因为程序不知道Test2()到底是谁,不知道自己应该关闭谁。

   需要先定义一个IEnumerator 的变量,将Test2() 存起来,

   再通过开启变量名,关闭变量,才能将其关闭,例如





    如果Test2(),有参数,aa保存了不同参数的Test2(),并且都开启,此时开启的是最后保存的  aa 

    例如

Unity协程StopCoroutine()的具体用法_第3张图片

Unity协程StopCoroutine()的具体用法_第4张图片

    当通过变量名关闭一次的时候,关闭的也是最后开启的 参数是3 的协程

2)StopCoroutine(Coroutine routine)

     该方法需要将 开启协程 的整个方法保存到一个  Coroutine 类型的变量,例如



   关闭时候也是通过变量名来关闭,例如

Unity协程StopCoroutine()的具体用法_第5张图片

   当同一个变量名开启了多个协程时,只关闭一次,关闭的是最后一次开启的协程,为了验证到底是关闭哪一个,我传入了不同的参数,例如

Unity协程StopCoroutine()的具体用法_第6张图片

当按下空格时,发现停止打印 参数是3 的协程了。

由此,我认为关闭的是最后一次开启的协程



PS:第一次写博客,还望大家多多指教





你可能感兴趣的:(Unity协程StopCoroutine()的具体用法)