来自俊俊大神的CSDN博客:https://blog.csdn.net/jueluoQAQ/article/details/88688558
这中间可能包含了一些常用的debug方法
比如下面这个黑科技:
这是我在学习debug类的过程中无意间看到的一个蛮有趣的操作,关于里面的各种数据大家可以去了解一下。
另外
不知道大家有没有注意到上面图片的左上角有一个橙色的球球呢?
就是这个:
把这边改了颜色之后就会变成这样:
哇哦!这样就能在场景中轻松找到一个连模型都没有的游戏物体啦!是不是很好用啊?!
接下来我们来认真仔细的讲讲咱们今天的重点:Debug类
Debug.developerConsoleVisible:
这是一个关于开发控制台的bool变量,在debug类中一开始就会自动设置好,就像下面这段代码一样:
using UnityEngine; public class OpenDevConsoleScript : MonoBehaviour { void Start() { Debug.developerConsoleVisible = true; } }
这个bool变量设置成真值有什么作用呢?
是这样的,当这个bool变量设置成真值后,一旦在unity的左下角出现了Error,他就会自动弹出并提示你。就像下面这段代码的作用:
using UnityEngine; public class LogErrorScript : MonoBehaviour { void Start() { Debug.LogError("I am an Error"); } }
Debug.isDebugBuild:
在"Build Settings" 对话框中有一个"Development Build"的选项。
如果复选框被选择,isDebugBuild则为true。在编辑器中isDebugBuild总是返回true。在游戏发布时, 这个命令可以移除所有Debug.Log调用。这样,你就可以轻松地发布带有调试输出的测试版和没有这些调试信息的最终版。
这个参数的作用主要就是下面这段代码写的这样
using UnityEngine; public class Example : MonoBehaviour { void Start() { // Log some debug information only if this is a debug build if (Debug.isDebugBuild) { Debug.Log("This is a debug build!"); } } }
也就是说,勾选上这个参数之后,再发布这个游戏,那么这个游戏的版本就是一个自带输出debug信息的版本了
Class Variables:
DrawLine(Vector3 start, Vector3 end, Color color = Color.white, float duration = 0.0f, bool depthTest = true):
绘制一条从开始点到结束点的线,需要指定绘线的颜色和持续时间。如果持续时间为0,那么该线只会被渲染1帧。该线将被绘制在编辑器下的Scene窗口中。如果Gimzo绘制方法被开启,那么该线同样会被绘制到Game窗口中。(最后一个参数如果为真就会有层次感,会被靠近相机的物体所阻挡)
DrawRay(Vector3 start, Vector3 dir, Color color = Color.white, float duration = 0.0f, bool depthTest = true):
从开始点绘制一条dir方向和长度的线,需要指定绘线的颜色和持续时间。如果持续时间为0,那么该线只会被渲染1帧。该线被绘制在编辑器下的Scene窗口中。如果Gimzo绘制方法被开启,那么该线同样会被绘制到Game窗口中。(最后一个参数如上条函数)
Break():
使编辑器暂停。当你想在运行到某种情况下游戏自动暂停下来以方便你查看对象属性面板中的值时,这是非常有用的。
Log(object message, Object context):
将日志信息输出到Unity控制台。当你在控制台中选中调试信息时,Unity将绘制一个调试信息与触发对象之间的连接。当你想知道在哪个对象上发送错误时,这是非常有用的。(前面那个参数是表示你在unity左下角的那个控制台中显示的语句,后面那个参数是你想要检测的游戏物体)
Dubug.Log会将debug反馈的日志信息以Massage
即上面这种形式出现在unity的控制面板之中。
LogError(object message, Object context):
关于Dubug.Log的各种变体我就大致介绍一下就过了。
这个函数,即Debug.LogError函数就会让反馈的日志信息以Error
这种形式出现在unity的控制面板之中。
LogWarning(object message, Object context):
这个函数也是Debug.Log的变体函数,具体的话会将反馈的日志信息以Warning
这种形式出现在unity的左下角的控制面板之中的。
LogAssertion(object message, Object context):
Log的一种变体,主要用于将断言消息记录到控制面板之中。那么什么是断言呢?一个断言就是一种检查状态的方法,如果这个状态为True,那么执行就会继续下去。若有任何突发异常或期望状态没有出现,一条显示用户自定义的信息就会被印出在调用堆栈。
LogException(Exception exception, Object context):
这个函数第一个参数是异常物体,具体可用方法为如下代码:
using System; using UnityEngine; using System.Collections; public class MyGameClass : MonoBehaviour { void MyGameMethod() { try { // Do something that can throw an exception } catch (Exception e) { Debug.LogException(e, this); } } }
ClearDeveloperConsole():
这个函数是用来清除unity的控制面板中的所有错误信息的,也就相当于cmd中的cls指令。
Assert(bool condition, object message, Object context):
这个函数其实就是断言,调用时会先检查你事先预定好的条件 (其实也就是设置好的第一个参数) ,如果条件为 false,则输出两条指定消息,并显示一个消息框,其中显示调用堆栈。
参数
第一个参数为要计算的条件表达式。 如果条件为 true,则不会发送指定的消息,也不显示消息框。
第二个参数为要发送到 Listeners 集合的消息。
第三个参数为一个需要设置格式的对象
默认情况下,Debug.Assert()方法仅适用于调试版本