协程方法的开启、关闭都是由对象完成的,所以我们在开启、关闭时都需要弄清楚对象,否则很容易出现协程打不开,或者关不掉的情况。
协程方法的开启、关闭方法1:用字符串打开,用字符串关闭,如果需要传递参数,可以在字符串后面写参数,但是参数个数只能为1。
1 public class Test 2 { 3 private void Start() 4 { 5 this.StartCoroutine("IEDo");//开启 6 this.StartCoroutine("IEDo1", 1);//开启并传参 7 this.StopCoroutine("IEDo");//关闭 8 this.StopCoroutine("IEDo1");//关闭 9 } 10 11 IEnumerator IEDo() 12 { 13 yield return null; 14 } 15 16 IEnumerator IEDo1(int a) 17 { 18 yield return null; 19 } 20 }
协程方法的开启、关闭方法2:用方法名打开协程,但关闭时会稍微麻烦点,如下图所示,通过打开时的返回值去关闭。
1 public class Test : Base 2 { 3 private void Start() 4 { 5 Coroutine cc = this.StartCoroutine(IEDo());//开启 6 this.StopCoroutine(cc);//关闭 7 } 8 9 IEnumerator IEDo() 10 { 11 yield return null; 12 } 13 }
协程方法的开启、关闭方法3:在协程方法中设置一个特定的条件,当这个条件满足时,用 break 或者 yield break 让协程自己关闭。
1 public class Test : Base 2 { 3 private bool val; 4 5 private void Start() 6 { 7 this.StartCoroutine("IEDo");//开启 8 } 9 10 IEnumerator IEDo() 11 { 12 while (true) 13 { 14 yield return null; 15 if (val) 16 { 17 //当布尔值 val 为真时,使用 break 或者 yield break 让协程自己关闭。 18 //break; 19 yield break; 20 } 21 } 22 }
另外需要注意: StopAllCoroutines() 这个方法也仅仅只能关闭调用这个方法的对象身上的所有协程,而不能关闭其他对象身上的协程。