DebugModule 调试系统
DebugModule 提供统一日志格式、运行时调试窗口、FPS 状态、日志查看、设备信息、GM 命令和自定义调试页面。它运行在 Player 中,不依赖 UnityEditor,因此可以直接用于真机和 Development Build 排查问题。
子功能
用途
- 按配置过滤并格式化 Info、Warning、Error 日志。
- 在运行时查看日志、错误堆栈、设备和内存基础信息。
- 通过 FPS 浮动按钮或快捷键打开调试窗口。
- 通过特性收集静态 GM 方法,生成可执行按钮。
- 注册项目自己的运行时监控页面。
设计思路与生命周期
text
ResModule 完成 Builtin Address 登记
→ DebugModule 加载 Cfg_Debug
→ Log.Configure
→ 按 DisplayMode 决定是否创建 DebugViewHost
├─ 不显示:直接 CompleteInit
└─ 显示:注册 Log/Base/GM 页面并创建常驻 Host
→ 每帧统计 FPS、处理快捷键、更新当前页面运行时窗口使用独立 DontDestroyOnLoad GameObject 和 IMGUI 绘制,不依赖项目 UI Module。模块清理时会注销日志监听、销毁全部页面与 Host、复位日志配置并释放 Cfg_Debug 句柄。
注意事项与限制
- 运行时代码和自定义 DebugView 不能引用
UnityEditor。 - Debug 页面不是业务状态的所有者,只读取状态或调用明确的调试命令。
- 自定义页面注册后必须在所属系统退出时注销,避免引用已销毁业务对象。
- GM 方法只有一个字符串输入;复杂参数由方法自己解析和校验。
- GM 调用异常会记录错误,但 GM 命令不应承担正式业务流程。
RefreshFrameInterval当前不会自动限制所有页面,项目页面需要自行使用它设计采集频率。LogLevel.None会直接过滤对应日志;不要依赖被关闭等级的日志驱动业务。
