今天在测试有yield有关的问题时,发现Debug.log()是异步输出机制。不一定会在调用后立即执行。

在C++有类似问题:std::cout 也不一定会立即输出,加上"\n"或std::endl可以。而C语言的print则会立即输出。

 public class rotCube : MonoBehaviour {
IEnumerator waitprint(){
for (int i = ; i < ; ++i)
Debug.Log ("delay");
Debug.Log ("waitforsecond: " + Time.time);
return null;
} IEnumerator Start () {
Debug.Log ("starttime " + Time.time);
yield return waitprint ();
print ("done"); } void FixedUpdate () {
transform.Rotate (, , );
}
}

点击运行,会发现,U3D编辑器卡了很长一段时间,然后控制台一下子蹦出了全部输出信息:

按照正常输出,应该是先输"starttime 0"。然后执行11行,在waitprint中卡一会出来,然后输出 "done"。

由于程序在waitprint中卡了很久,debug.log一直没机会输出,所有的debug.log都暂存到了缓冲区中,等到程序缓过来,才一起输出。

因此,在U3D中使用debug.log调试游戏的逻辑并不可靠,所有log的先后顺序是对的,但log与其它逻辑的先后顺序就不对了。

靠谱的调试方式:

1,单步。缺点是调试多线程时比较麻烦。

2,editorutil.displaydiag(),这个是同步的,而且是阻塞的,执行时立即弹出框,保证了弹框顺序就是真实的逻辑顺序。

U3D Debug.log的问题的更多相关文章

  1. salesforce 零基础学习(三十)工具篇:Debug Log小工具

    开发中查看log日志是必不可少的,salesforce自带的效果显示效果不佳,大概显示效果如下所示: chrome商城提供了apex debug log良好的插件,使debug log信息更好显示.假 ...

  2. 在Salesforce中通过 Debug Log 方式 跟踪逻辑流程

    在Salesforce中通过 Debug Log方式 跟踪逻辑流程 具体位置如下所示: Setup ---> Logs ---> Debug Logs ---> Monitored ...

  3. Android如何让真机显示debug log的调试信息

    真机默认是不开启debug log调试功能的,以前我一直用模拟器,模拟器默认是开启debug log调试功能的,那么如何让真机开启呢? 我用华为Ascend P6为例: 1.进入拨号界面,输入*#*# ...

  4. FND Debug Log(FND_LOG_MESSAGES)

    之前每个模块记录日志的方式都不同,都会把日志写到不同的文件中,对于User来说很麻烦,需要记住很多的配置,现在越来越多的模块使用FND Logging来存储日志,比如WIP,RCV,OAF...FND ...

  5. unity, 对于Debug.Log输出的log,可以双击定位到代码

    unity, 对于Debug.Log输出的log,可以双击定位到代码

  6. Python的DEBUG LOG

    一直在嵌入式行业,熟悉嵌入式的朋友都很了解嵌入式设备上DEBUG的麻烦,特别是一些缺乏断电工具和没有UI界面的设备.久而久之,开发一个新东西,首先就是要先搞定DEBUG手段.最近写了几个测试的pyth ...

  7. Nginx Debug Log

    //检查nginx.conf时(sudo ./nginx -t),输出数据到检测结果 //ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "配置解析处理&q ...

  8. android 让真机显示 DeBug Log调试信息

    真机默认是不开启Log 开关的,这么来说我们如果使用真机来搞程序测试的话,需要做以下几个步骤: 下面以华为手机为例开启手机的log功能:  1.在拨号界面输入:*#*#2846579#*#*  进入测 ...

  9. 华为荣耀8 android 让真机显示 DeBug Log调试信息 (真机调试时不显示 Logcat 日志的解决办法)

    ================================================================ 以下内容转载自: https://blog.csdn.net/aiko ...

随机推荐

  1. IOS 网络浅析-(八 NSURLSession简介)

    就在不长也不短的时间前,苹果正式命令咱们要向NSURLSession看,因此我们不得不认认真真的听从老大的教导,努力认知NSURLSession.其实呢,三方早已为我们解决了问题,但是呢,我们还是有必 ...

  2. android 之 ExpandableListView列表中的列表

    有时候,我们需要设计这样一个界面,外面有一个列表,当我们点击其中列表中的某个条目时,就会展开这个条目,出现一个新的列表.比如下图:(程序运行的效果图,在这里贴出来) 当我们点击第一项时,视图变为: - ...

  3. JSON取值前判断

    public static void main(String[] args)throws Exception{ String jsonStr1="{\"access_token\& ...

  4. 同域iframe的高度自适应

    引子 父页面里控制子页面 子页面里控制父页面 一.引子 我们先看一个示例,有两个页面,1.html通过iframe嵌入2.html,两个页面都是同域的 1.html <!DOCTYPE html ...

  5. ASP.NET动态加载用户控件的方法

    方法是使用LoadControl方法,根据用户控件的相对路径,动态生成用户控件对象 用户控件 public class UserControlA :UserControl { public UserC ...

  6. 标准sql语句,学习

    标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 -------------------------------------------------------- ...

  7. poj 3169 Layout 差分约束模板题

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6415   Accepted: 3098 Descriptio ...

  8. 20150912华为机考2之"输入一段字符串(英文),将每个单词首字母大写后输出"

    还有其他一些(隐性)要求(要不然无法通过测试): .如果首字母已经大写,则不用变 .不是英文字母的不变 e.g. Input: hello world! this is _Ljj speaking! ...

  9. [转]Asp.NET MVC Widget开发 - ViewEngine

    本文转自:http://www.cnblogs.com/hsinlu/archive/2011/03/02/1968796.html 在Asp.NET开发博客类系统,我们经常都会用到Widget,像在 ...

  10. CORDIC原理与FPGA实现(2)

    CORDIC算法实现极坐标(polar)到直角坐标系(Cartesian)的变换. 1: function [horizonal,vertical]=polar2car(mag, pha); 2: x ...