通常我們知道開啟協程用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 }