标签:
调试是我们程序员最基本的技能之一, 当我们自己变得浮躁或某一些限制之后.我们就开始放弃编写调试机制,来短时间获取结果.
一个小故事: 刚刚入职游戏行业的我来到一家中型游戏开发公司,当时心非常激动可以在这里学习到很多东西,比如团队的配合,框架的搭建等等.=。=入职第2周几乎老程序员都离职了,最后留下的程序员在职不超过5个月。 当时把我吓哭了,导致程序员集体离职有很多原因, 有的工资开少了,有的项目拖的时间太长了。 听说我们项目开发快3年了。 我被分配到去做IOS打包和接SDK,我发现了项目居然有这么一个事情。 就是Unity Mac上点击运行 是无法运行的, 必须发包到手机上面去才可以. 项目总监给我解释只能在手机上跑,Mac电脑上面我还没有帮你们调通。 这句话导致我和主城半小时能解决的问题, 搞了1个星期而且还是勉强修复了一些BUG。 =.= 我只能偷偷的笑了,你这么搞一下让我们怎么调试程序? 而且我们居然是先去修复BUG, 连游戏无法在Mac跑起来这个Bug居然都是后面修复。总监也不怎么样嘛
回到我们的问题,我想告诉大家如何在Debug.Log()加一些小技巧让我们能快速定位到错误, 并且能让不熟悉项目的人知道是那个人负责的东西出错了.
我们常常利用Debug.log()在控制台上显示一些信息帮助我们查看错误
列子:
Debug.Log("资源加载完毕"); Debug.Log("显示购买窗口页面"); Debug.Log("我运行了"); //这个无效Log一般我喜欢这样做呵呵,吃屎啦
在某种角度上这些文字是没有错误的, 但是假设A发现游戏运行不起来了, “资源加载出错” 这种模糊的文字. 如果A不是开发资源加载的他是无法定位的具体那个位置的。
优化之后的Log第一方式:
Debug.Log("资源模块-加载资源出错误" ); Debug.Log("资源模块-主角贴图没有找到" );
第二方式: (当然我不知道Xcode 和 EclipseLog是否能直接看到具体是那个类,函数报出来的错误,一般这种我们都是显示到自己的GUI调试中心当中)
Debug.Log("类名-函数名-log内容");
第三方式:
Debug.Log("模块名-类名-函数名-log内容");
Application类中提供一个回调函数每当Debug.Log的时候就会触发
注册回调函数: Application.RegisterLogCallback(LogCallback);
public void LogCallback(string condition, string stackTrace, LogType type) { switch (type) { case LogType.Log: //普通Log break; case LogType.Exception: //报异常了 break; case LogType.Error: //错误信息 break; case LogType.Warning: //Warning信息 break; default: break; } }
标签:
原文地址:http://www.cnblogs.com/plateFace/p/4748896.html