StartCoroutine: 开启一个协同程序
yield return: 返回调用迭代
void Start(){
Debug.Log("111");
StartCoroutine(CorTest());
Debug.Log("333");
}
IEnumerator CorTest(){
Debug.Log("222");
yield return null;
Debug.Log("444");
}
上面按照输出的顺序执行,在第一次调用StartCoroutine开启协程的时候和正常的方法调用相同,在遇到yield关键字后,根据返回值指定在什么时候继续(resume)协同程序。上面的代码片段中,yield return null会暂停协程,而这个时候会回到start函数内,往下执行,在下一帧开始后继续协同程序的执行。
//暂停协同程序,下一帧再继续往下执行
yield return null;
//暂停协同程序,等到下一次调用FixedUpdate方法时再继续往下执行
yield new WaitForFixedUpdate ();
//暂停协同程序,2秒之后再继续往下执行
yield return new WaitForSeconds(2);
//暂停此协同程序,开启SomeCortoutineMethod协同程序,直到SomeCortoutineMethod执行完
yield return StartCoroutine("SomeCortoutineMethod");