Skip to content

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 会直接过滤对应日志;不要依赖被关闭等级的日志驱动业务。

SuperCore 使用 MIT License 开源