Unity—协程使用

Unity——协程使用

官方解释:在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行;

个人理解:函数中调用另一个函数,另一个执行完成回来继续往下执行该函数;

StartCoroutine方法属于MonoBehaviour中API,和Invoke一样必须继承MonoBehaviour才能使用;

使用方法1:

StartCoroutine("方法名",参数);

使用方法2:

StartCoroutine(IEnumerator method)

IEnumrator方法:

StartCoroutine(TestMethod());

IEnumerator TestMethod()
{
	yield return 1;
}

yield return种类

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

yield return 1,2,3,......: 程序等待1,2,3...帧之后从当前位置继续执行;

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

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

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

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

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

yield break: 直接从当前位置跳出函数体,回到函数的根部;

协程终止

StopCoroutine (string methodName)		//终止指定的协程
StopAllCoroutine() 				//终止所有协程

协程返回值

协程中的参数不能加out,原因未知;

直接返回值也会报错,考虑后直接将参数写成回调;

或者直接变量记录;

private float num = 0;
private Action<float> actCallBack;
void Start()
{
    actCallBack = (value) => num = value;
    StartCoroutine("Test", actCallBack);
}
private void Test(Action<float> act)
{
    act(10);
}
posted @ 2021-10-12 17:59  小紫苏  阅读(317)  评论(0编辑  收藏  举报