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;

    }

  • 相关阅读:
    739. Daily Temperatures
    556. Next Greater Element III
    1078. Occurrences After Bigram
    1053. Previous Permutation With One Swap
    565. Array Nesting
    1052. Grumpy Bookstore Owner
    1051. Height Checker
    数据库入门及SQL基本语法
    ISCSI的概念
    配置一个IP SAN 存储服务器
  • 原文地址:https://www.cnblogs.com/bearhb/p/11156466.html
Copyright © 2011-2022 走看看