您的位置:首页 > 移动开发 > Unity3D

Unity——协程使用

2021-10-12 17:59 1036 查看

Unity——协程使用

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

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

使用方法1:

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

使用方法2:

StartCoroutine(IEnumerator method)

IEnumrator方法:

IEnumrator 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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: