• MonoBehaviour.StartCoroutine开启协同程序


    StartCoroutine协同程序

    StartCoroutine(IEnumerator)

    StartCoroutine(string methodName)

    StartCoroutine(string methodName,Object value)

    顾名思义,协同就是在已经执行的程序中开启另外一个线程。简单的分为两种,一种是同步协同,另一种是异步协同。

    异步协同(案例代码)

     1 void Start()
     2 {
     3 print("start"+Time.time);
     4 StratCoroutine(WaitAndPrint(5.0f));
     5 print("finish"+Time.time);
     6 }
     7 IEnumerntor WaitAndPrint(float time)
     8 {
     9 yield return new WaitForSeconds(time);
    10 print("wait'+Time.time);
    11 }
    异步协同

    该代码的执行结果为

    start0

    finish0

    wait5

    同步协同(案例代码)

    IEnumerator Start()
    {
    print("start"+Time.time);
    yield return StartCoroutine(WaitAndPrint(5.0f));
    print("finish"+Time.time);
    }
    IEnumerator WaitAndPrint(float time)
    {
    yield return new WaitForSeconds(time);
    print("finish"+time);
    }
    同步协同

    start0

    wait5

    finish5

    心得理解:StartCoroutine只是起到一个调用的作用,真正起作用的是yield return


    使用同一线程要在使用 yield return StartCoroutine(方法);返回值类型大都是IEnumerator.IEnumerable

    使用不用的线程要使用StartCoroutine(方法):

    yiled return new WaitForSeconds(float time);

    yiled return new WaitUntil(bool);

    yiled return new WaitWhile();

    yiled return 通俗易懂些就是为了让后者被作用的对象,执行完之后,才进行下一步操作

    yiled return new WaitForSeconds(float 2.f)就犹如if(time>2.0f),可以视为条件判断的一种

  • 相关阅读:
    MySQL百万级数据量分页查询方法及其优化
    聊一聊二维码扫描登录原理
    在吗?认识一下JWT(JSON Web Token) ?
    怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术
    javascript sleep pause 实现
    google 根据地址得ip 并显示
    javascript 闭包
    javascript 对象 telecom
    javascript 对象
    google maker 标注
  • 原文地址:https://www.cnblogs.com/HeYIcengshuo/p/6432380.html
Copyright © 2020-2023  润新知