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);
}
Life is too short for so much sorrow.
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0 许可协议。转载请注明来自 小紫苏!