• 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;

    }

  • 相关阅读:
    理解JavaScript的数值型数据类型
    The First Article
    DOS符号转义(转 http://www.robvanderwoude.com/escapechars.php)
    symfony中doctrine常用属性
    Node中的promise简说及入门
    DOM操作三
    DOM操作二
    DOM操作一
    JavaScript算法题(二) && 数组filter使用
    简说 call() 、apply() 、bind()
  • 原文地址:https://www.cnblogs.com/bearhb/p/11156466.html
Copyright © 2020-2023  润新知