StartCoroutine协同程序
StartCoroutine(IEnumerator)
StartCoroutine(string methodName)
StartCoroutine(string methodName,Object value)
顾名思义,协同就是在已经执行的程序中开启另外一个线程。简单的分为两种,一种是同步协同,另一种是异步协同。
异步协同(案例代码)
1 void Start() 2 { 3 print("start"+Time.time); 4 StratCoroutine(WaitAndPrint(5.0f)); 5 print("finish"+Time.time); 6 } 7 IEnumerntor WaitAndPrint(float time) 8 { 9 yield return new WaitForSeconds(time); 10 print("wait'+Time.time); 11 }
该代码的执行结果为
start0
finish0
wait5
同步协同(案例代码)
IEnumerator Start() { print("start"+Time.time); yield return StartCoroutine(WaitAndPrint(5.0f)); print("finish"+Time.time); } IEnumerator WaitAndPrint(float time) { yield return new WaitForSeconds(time); print("finish"+time); }
start0
wait5
finish5
心得理解:StartCoroutine只是起到一个调用的作用,真正起作用的是yield return
使用同一线程要在使用 yield return StartCoroutine(方法);返回值类型大都是IEnumerator.IEnumerable
使用不用的线程要使用StartCoroutine(方法):
yiled return new WaitForSeconds(float time);
yiled return new WaitUntil(bool);
yiled return new WaitWhile();
yiled return 通俗易懂些就是为了让后者被作用的对象,执行完之后,才进行下一步操作
yiled return new WaitForSeconds(float 2.f)就犹如if(time>2.0f),可以视为条件判断的一种