不知今天大脑CPU转速不够还是怎么了,发现StartCoroutine的运行机制让我懵逼了!!!

简单概述一下:当update里的变量条件和 StartCoroutine();方法里的变量是同一个的话 StartCoroutine();的执行会循环执行和update一样,直到超过StartCoroutine();等待时间才会停止。

具体情况如下:

首先看下面代码,通过i条件来控制StartCoroutine的触发。

using UnityEngine;
using System.Collections;public class NewBehaviourScript : MonoBehaviour
{float i = 1;int num = 0;// Use this for initializationvoid Start(){//  StartCoroutine(waitme(1));}// Update is called once per framevoid Update(){i += 1;if (i == 13){Debug.Log("i是多少?" + i);StartCoroutine(waitme(1));}//if (num == 0)//{//    StartCoroutine(waitme(1));//}}IEnumerator waitme(int a){       yield return new WaitForSeconds(a);Debug.Log("两秒已过了"+num);if (num < 100000){num = num +1;Debug.Log("num多少?????? " + num);}}
}

执行结果如下:

这个看起来非常正常。正是协程。

但是下面的情况就是一个让我懵逼的情况:当我用上述代码里Update里的另个条件来触发StartCoroutine就不同了。等待还是会等待的,但等待时间过去就会循环执行yield后面的代码。

下面是代码:(只是把上个代码里的触发条件换成了下面的)

using UnityEngine;
using System.Collections;public class NewBehaviourScript : MonoBehaviour
{float i = 1;int num = 0;// Use this for initializationvoid Start(){//  StartCoroutine(waitme(1));}// Update is called once per framevoid Update(){//i += 1;//if (i == 13)//{//    Debug.Log("i是多少?" + i);//    StartCoroutine(waitme(1));//}if (num == 0){StartCoroutine(waitme(1));}}IEnumerator waitme(int a){       yield return new WaitForSeconds(a);Debug.Log("两秒已过了"+num);if (num < 100000){num = num +1;Debug.Log("num多少?????? " + num);}}
}

再看执行结果;竟然和update一样了,一直执行,直到StartCoroutine的等待时间到了才停止。

上图这个num会执行到49,当我把代码中StartCoroutine等待时间a变成2之后,看下图:

可见它的循环时间是由a来决定的。。。

我只想知道StartCoroutine是什么运行机制???宝宝懵逼了!!!

unity之StartCoroutine运行机制--懵逼了相关推荐

  1. 傻傻分不清的javascript运行机制

    学习到javascript的运行机制时,有几个概念经常出现在各种文章中且容易混淆.Execution Context(执行环境或执行上下文),Context Stack (执行栈),Variable ...

  2. 从hello world 说程序运行机制

    http://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html 开篇 学习任何一门编程语言,都会从hello world 开始.对于 ...

  3. js 多个定时器_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(二)

    作者:撒网要见鱼   https://segmentfault.com/a/1190000012925872 本文接上篇 <从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(一)> ...

  4. session对象运行机制

    当你看到 "会话" 这个词的时候,你会怎么理解呢?是交流.对话的意思吗?那毫无疑问绝对是的啦,只不过那是传统意义上的,或者说是日常生活中的意思,在计算机科学领域,它的意思就要引申一 ...

  5. http和https的区别 与 SSL/TLS协议运行机制的概述

    http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...

  6. 第3课:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错...

    本期内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 理解SparkStreaming的Job的整个架构和运行机制对于精通Spar ...

  7. 浅谈SQL Server内部运行机制

    原文:浅谈SQL Server内部运行机制 对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL ...

  8. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

  9. WebForm页面生命周期及asp.net运行机制

    转载至:https://www.cnblogs.com/liangxiaofeng/p/5620033.html 1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请 ...

最新文章

  1. 如何自学python数据分析-良心整理!学习Python数据分析的正确姿势
  2. L1-041 寻找250
  3. 六十七、完成Vue项目首页图标区域布局和逻辑实现
  4. boost::math::tools::continued_fraction_b用法的测试程序
  5. Tomcat集群实现源码级别剖析
  6. Python练习:星号三角形 I
  7. vue之组件之间的传值
  8. 约瑟夫环非递归算法分析
  9. linux磁盘链路故障
  10. [转]网页不需要漂亮
  11. Unity3D基础26:物体实例化
  12. 希捷、西部数据硬盘保修查询
  13. 如何给PDF加水印,PDF加水印的快速方法
  14. BIMC电子商务外包服务独特之处
  15. 更改autocad 07为传统的二维绘图界面
  16. PB EXCEL导入
  17. 连续性方程_连续性方程表示什么守恒
  18. raw socket (DELPHI开发平台)
  19. 微信小程序实战 (WXSS:小程序版CSS、WXS:小程序版JavaScript)
  20. android修改系统默认时间

热门文章

  1. [每天get点新技能]搜商——寻找“免费”的资源
  2. cad打开卡死_小秘诀,CAD打开就卡住应该这么做!
  3. 通信原理抽样定理MATLAB实验报告,通信原理抽样定理实验报告
  4. 迅捷家用路由器模拟登录页面测试
  5. php开发路由器界面,路由器Web页面交互Tips(示例代码)
  6. NR 随机接入过程(一)
  7. NOIP 2018 真・退役记
  8. LBM学习记录5 Python实现IB二维圆柱绕流 1.0
  9. 优达学城Numpy与Pandas笔记
  10. 半导体行业为何在马来西亚扎堆?