C# unity 协程

StopAllCoroutines只会停止调用这个接口的脚本实例对象上的所有协程,而非调用这个接口脚本的所有实例对象。

1.      使用Unity的MonoBehavior组件开启一段协同程序非常方便,但是应该注意如果这段程序需要运行一段较长时间,在运行期间,如果开启这段协同程序的组件被删除了,则这段程序就不在执行了,因此使用StartCoroutine要注意源组件的生命周期和协同程序的生命周期。

2. 在Unity中,有些类不继承自MonoBehaviour,若想要在这些类中使用StartCoroutine,则可以
new GameObject().AddComponent().StartCoroutine("Test1");
其中,MonoStub:
public class MonoStub : MonoBehaviour { }
不这样的话,在Unity5.6中会报错。

上面是Unity5.6.3P4上测试过,之前在Unity5.2.5上可以使用:
new GameObject().AddComponent().StartCoroutine("Test1");

//程序在下一帧中从当前位置继续执行
yield return 0;

//程序在下一帧中从当前位置继续执行
yield return null;

//程序等待N秒后从当前位置继续执行
yield return new WaitForSeconds(N);

//在所有的渲染以及GUI程序执行完成后从当前位置继续执行
yield new WaitForEndOfFrame();

//所有脚本中的FixedUpdate()函数都被执行后从当前位置继续执行
yield new WaitForFixedUpdate();

//等待一个网络请求完成后从当前位置继续执行
yield return WWW;

//等待一个xxx的协程执行完成后从当前位置继续执行
yield return StartCoroutine(xxx);

//如果使用yield break语句,将会导致协程的执行条件不被满足,不会从当前的位置继续执行程序,而是直接从当前位置跳出函数体,回到函数的根部
yield break;

 

你可能感兴趣的:(C#,Unity3D)