using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class IeTest : MonoBehaviour {
public Button StartC;
public Button Stopc;
public Text Numc;
int i = 0;
// Use this for initialization
void Start () {
//开启协程
StartC.onClick.AddListener(delegate() {
// StartCoroutine(Test());
// StartCoroutine("Test");
// StartCoroutine(Test2(i));
StartCoroutine("Test2",i);
});
//结束协程
Stopc.onClick.AddListener(delegate() {
// StopCoroutine("Test");
StopCoroutine("Test2");
// StopAllCoroutines();
});
}
//协程
IEnumerator Test(){
while (true) {
yield return new WaitForSeconds (1);
i++;
Numc.text = i + "";
}
}
IEnumerator Test2(int i){
while (true) {
yield return new WaitForSeconds (1);
i++;
Numc.text = i + "";
}
}
}
经过测试StopAllCoroutines()可以停止所有书写模式开启的协程;StopCoroutine("Test")只能够停止StartCoroutine("Test")书写模式的协程;StartCoroutine(Test())模式开启的协程只能由StopAllCoroutines()停止,不能由StartCoroutine("Test")停止。
注意:继承父类重写虚方法,是另起一个协程,只对重写中开启的协程有关,所以StopAllCoroutines()不是只针对当前脚本中写的协程有用,而是对由当前脚本开启的协程有用,例如在子类中重写了父类中的虚方法,并调用了,就是在子类中又开启了一个父类中的私有类型的协程,在子类中的StopAllCoroutines();命令,只对子类中又开启的协程有用。