Unity HTFramework框架(二十一)Debug调试器
Posted 神码编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity HTFramework框架(二十一)Debug调试器相关的知识,希望对你有一定的参考价值。
索引
Debug调试器简介
Debug模块自带Debugger运行时调试器,可以监控一些常规数据与软件运行环境,或是进行一些高级的操作,比如检索场景所有游戏对象(等效于编辑器内Hierarchy窗口的功能),检索游戏对象的所有组件(等效于编辑器内Inspector窗口的功能)。
使用Debug
启用Debugger调试器
在面板勾选IsEnableDebugger开关,则启用了Debugger调试器。
注意:必须在面板开启IsEnableDebugger,调试器才可用,之后通过代码设置IsEnableDebugger为false可动态停用调试器,如若面板未开启IsEnableDebugger,之后通过代码设置IsEnableDebugger将无效。
1.Debugger:当前使用的调试器。
2.Debugger Skin:当前使用的调试器的GUI皮肤。
Debugger调试器面板
启用调试器之后,运行主场景便可以看到调试器面板。
FPS帧率监控
用于显示实时帧率,点击FPS按钮可以展开或收缩完整的调试器窗口。
Console [控制台日志]
这里可以查看程序的所有运行日志,包括使用Debug.Log系列打印的日志,或是其他的未捕获异常。
Scene [场景]
这里可以实时监控场景中的所有游戏对象(在软件发布后的运行时,而非编辑器内),或者以自定义的调试器组件来检索某一特定的组件,修改组件属性或是执行任何自定义操作。
Hierarchy [层级]
Hierarchy层级窗口几乎等效于编辑器内的Hierarchy层级窗口,显示当前所有场景中的所有游戏对象:
【Debug视图】
【对应编辑器内视图】
Inspector [检视]
在Hierarchy层级窗口选中一个游戏对象后,Inspector检视窗口则显示其上挂载的所有组件,选中某一个组件,可以显示其调试器UI(前提是为该组件定义调试器组件)。
【Debug视图】
【对应编辑器内视图】
定义调试器组件
如下,有Player类:
public class Player : MonoBehaviour
/// <summary>
/// 生命力
/// </summary>
public int HP;
/// <summary>
/// 魔法力
/// </summary>
public int MP;
/// <summary>
/// 能量
/// </summary>
public int Power;
public void Attack()
我们为Player定义调试器组件:
1.调试器组件必须继承至DebuggerComponentBase。
2.调试器组件必须标记特性CustomDebugger,并传入参数指向的组件类型。
如下,有指向Player类的调试器组件DebuggerPlayer:
[CustomDebugger(typeof(Player))]
public class DebuggerPlayer : DebuggerComponentBase
private Player _target;
public override void OnEnable()
_target = Target as Player;
public override void OnDebuggerGUI()
注意:调试器组件的Target字段为当前指向的组件Player(Component),OnEnable方法当调试器面板的Player组件被选中时调用,之后OnDebuggerGUI方法用于自定义Player组件在调试器面板的显示UI。
重写调试器UI
重写OnDebuggerGUI方法即是重写组件在调试器的Inspector面板的显示UI。
public override void OnDebuggerGUI()
GUILayout.BeginHorizontal();
GUILayout.Label("HP:" + _target.HP.ToString());
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Label("MP:" + _target.MP.ToString());
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Label("Power:" + _target.Power.ToString());
GUILayout.EndHorizontal();
//模拟攻击
GUILayout.BeginHorizontal();
if (GUILayout.Button("Attack"))
_target.Attack();
GUILayout.EndHorizontal();
//击杀
GUILayout.BeginHorizontal();
if (GUILayout.Button("Kill This Player"))
_target.HP = 0;
GUILayout.EndHorizontal();
//恢复
GUILayout.BeginHorizontal();
if (GUILayout.Button("Recover HP"))
_target.HP = 100;
if (GUILayout.Button("Recover MP"))
_target.MP = 100;
if (GUILayout.Button("Recover Power"))
_target.Power = 100;
GUILayout.EndHorizontal();
我们运行主场景,并在Hierarchy面板选中Player对象,在Inspector面板选中Player组件,如下,我们自定义的OnDebuggerGUI:
我们可以在OnDebuggerGUI方法中自定义任何操作(比如上文的Kill This Player或Recover HP等),这些操作将打破程序的正常运行轨迹,以实现一些特殊的调试需求。
动态添加组件
点击Add Component按钮,弹出组件选择列表,用以选择将要添加到当前选中的游戏对象上的组件:
动态删除组件
在选中一个组件时,点击Delete Component按钮,立即从当前选中的游戏对象上移除该组件:
Memory [内存]
这里可以监控整个项目的内存使用信息,手动卸载资源,手动进行GC垃圾回收。
DrawCall [DC监控]
这里可以监控整个项目的DrawCall信息。
System [系统]
这里可以获取当前运行系统的信息,包括操作系统、处理器、显卡等硬件信息。
Screen [屏幕]
这里可以查看显示屏的相关信息,或者程序分辨率等,可以进行全屏和非全屏的切换,以及截屏等操作。
Quality [质量]
这里可以查看或重新设置当前程序的图形显示质量。
Time [时间]
这里可以查看程序的运行时间,或是手动调整Time Scale的倍率等。
Environment [环境]
这里可以查看程序的基本信息。
性能监控
运行时检视面板
在编辑器中运行时将会出现运行时检视面板(Runtime Data),主要用以调试或数据监测,目前面板如下:
1.No Runtime Data!
以上是关于Unity HTFramework框架(二十一)Debug调试器的主要内容,如果未能解决你的问题,请参考以下文章
Unity HTFramework框架(四十一)在编辑器内绘制美观且实用的表格窗口(TableView)
Unity HTFramework框架(四十一)在编辑器内绘制美观且实用的表格窗口(TableView)
Unity HTFramework框架(四十一)在编辑器内绘制美观且实用的表格窗口(TableView)