unity如何停止不用字符串方式開啟協程的方法


通常我們知道開啟協程用StartCoroutine("Method"); 停止協程用StopCoroutine("Method");

如果我們想要終止所有的協程,可以通過StopAllCoroutines();方法來實現。

注意:這只會終止在調用該方法的對象中(應該是指調用這個方法的類)開始的協程,對於其他的MonoBehavior類中運行的協程不起作用。

但是如何單獨停止用StartCoroutine(Method());開啟的協程呢,資料上說:如果想要終止某一個特定的協程,那么你必須得在開始協程的時候將它的方法名作為字符串。

但是我還是不妥協,如果不能停止,為什么要提供這個方法呢,所以我琢磨出一種方法來實現。

StartCoroutine(Method());方法是有一個Coroutine類型的返回值的,我們用一個變量接收它,然后在StopCoroutine()里面把它填進去就好了。代碼如下:

復制代碼
 1 using UnityEngine;  2 using System.Collections;  3  4 public class Test : MonoBehaviour  5 {  6  Coroutine coroutine;  7  8 void Start()  9  { 10 coroutine = StartCoroutine(Method()); 11  } 12 13  IEnumerator Method() 14  { 15  StopCoroutine(coroutine); 16 Debug.Log("已經停止協程"); 17 yield return 0; 18  } 19 }
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM