zoukankan      html  css  js  c++  java
  • 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),可以视为条件判断的一种

  • 相关阅读:
    C#各版本新特性
    ubantu操作积累
    C# System.Net.Http.HttpClient使用说明
    IIS下VUE跳转
    融合主流的技术 分布式中间件+微服务+微架构架构
    论减少代码中return语句的骚操作
    shell脚本--多个代码库批量pull最新master代码
    SpringBoot单元测试
    Qt音视频开发36-USB摄像头解码qcamera方案
    Qt音视频开发35-Onvif图片参数
  • 原文地址:https://www.cnblogs.com/HeYIcengshuo/p/6432380.html
Copyright © 2011-2022 走看看