zoukankan      html  css  js  c++  java
  • Unity 协程

       1.  协程不是多线程,见官方图,它发生在LateUpdate()之后的

       2.  定义协程的方法,写个方法,它必须返回IEnumerator 接口,可带参数,也可以不带参数;

       3.  启动协程StartCoroutine方法,

                     StartCoroutine("方法名")或StartCoroutine("方法名",相应的参数)

                     StarrtCoruntine(方法名())

       4.停止协程

                  StopCoroutine("方法名"); 或StopAllCoroutines();

       5.协程中常用的一些语句:

         

    IEnumerator Test()
    {
    //等待下一帧Update之后,继续执行后续代码
    yield return null;

    //等待在所有相机和GUI渲染之后,直到帧结束,继续执行后续代码
    yield return new WaitForEndOfFrame();

    //等待下一个FixedUpdate之后,继续执行后续代码
    yield return new WaitForFixedUpdate();

    //等待3秒之后,继续执行后续代码,使用缩放时间暂停协程执行达到给定的秒数
    yield return new WaitForSeconds(3.0f);

    //等待3秒之后,继续执行后续代码,使用未缩放的时间暂停协程执行达到给定的秒数
    yield return new WaitForSecondsRealtime(3.0f);

    //等待直到Func返回true,继续执行后续代码
    //yield return new WaitUntil(System.Func<bool>);
    yield return new WaitUntil(() => true);

    //等待直到Func返回false,继续执行后续代码
    //yield return new WaitWhile(System.Func<bool>);
    yield return new WaitWhile(() => false);

    //等待新开启的协程完成后,继续执行后续代码,可以利用这一点,实现递归
    yield return StartCoroutine(Test());

    //for循环
    for (int i = 0; i < 10; i++)
    {
    Debug.Log(i);
    yield return new WaitForSeconds(1);
    }

    //while循环,while(true):如果循环体内有yield return···语句,不会因为死循环卡死
    int j = 0;
    while (j < 10)
    {
    j++;
    Debug.Log(j);
    yield return new WaitForSeconds(1);
    }

    //终止协程
    yield break;

    }

  • 相关阅读:
    pywin32解析office文档
    解决NGUI自动被设置LYAER
    ngui的tween的tweenFactor属性
    ngui中 代码调用按钮事件(后来改成了按钮绑定键盘..)
    unity调用摄像头的方法
    坐标转换,这次是反过来,屏幕坐标转换成世界坐标
    unity5.3 安卓广告插件打包出错的理解
    从世界坐标转换成ui的rect坐标的方法
    关于unity碰撞检测器的用法
    测试第一篇标题
  • 原文地址:https://www.cnblogs.com/bearhb/p/11156466.html
Copyright © 2011-2022 走看看