Unity3D协同程序概念理解

Unity协程介绍

概念

协程全称协同程序,与线程类似,每一个应用程序都对应一个进程,每一个进程都有一个主线程,而协程在主线程之中,因而使用了还是单线程,不能理解为多线程,应是主线程的一部分。
常用于使用动画时同步代码,时间等待,资源加载,场景切换等等

运行原理及代码演示

使用yield return来中段程序,相当于把该函数后续代码挂起,但是每一帧都会对yield return的返回值条件进行检测。
代码演示:
(1)声明协程的函数:
IEnumerator function_name(){
yield return 1;
}
(2)代码调用协程函数
开启协程:StartCoroutine(function_name()/“function_name”);
使用函数this.function_name()作为开启协程的参数时,必须使用(暂停指定协程函数)StopCoroutine(function_name())来停止协程,但是后续代码(yield return 1后面)还是会执行,只能使用StopAllCoroutines();停止所有的协程,但是协程对应函数function_name可以携带多个参数。
使用字符串"function_name"作为开启协程参数时,必须使用StopCoroutine(string function_name)来停止协程,后续代码不会被执行,但是function_name最多只能携带一个参数,假定参数类型为int,那么要开启协程则StartCoroutine(“function_name”,1)

常用返回值

yield return 数字(比如0,1,2…)/null;等待下一帧时才运行
yield return break;//直接结束,后面的代码不进行操作
yield return new WaitForSeconds(float time);等待time秒后执行后续代码
yield return WaitForFixedUpdate();等待下一次FixedUpdate开始时执行
yield return new WaitWhile/WaitUtil(function_name());function_name是一个返回值为bool的函数,会一直检测函数返回值是否满足条件,当返回值为false/true时满足条件,执行后续代码
yield return StartCorotine(function_name()/string function_name);等待指定协程操作执行完成后,才开始执行后续代码
yield return asyncOperation(备注:该对象是AsyncOperation异步操作对象,常用于使用异步操作的场景切换);
yield return w(备注:WWW对象,常用于等待该对象下载完成,常用于AssetBundle资源包的加载);

你可能感兴趣的:(Unity概念)