MeowmentDebugTool/Packages/com.bywaystudios.meowmentdebugtool/CONSOLE_INTEGRATION.md
2025-12-22 15:29:55 +08:00

6.6 KiB
Raw Blame History

Console 控制台模块 - 添加说明

已完成的工作

1. 新增文件

LogNode.cs

日志节点数据结构,包含:

  • LogType: 日志类型Info/Warning/Error/Exception
  • LogMessage: 日志消息
  • StackTrace: 堆栈跟踪
  • LogTime: 日志时间
  • LogFrameCount: 日志帧数

ConsoleModule.cs

控制台模块实现基于UGUI包含以下功能

  • 实时捕获Unity日志
  • 日志分类和过滤Info/Warning/Error/Fatal
  • 锁定滚动到底部
  • 点击查看详细堆栈信息
  • 清除日志功能
  • 日志颜色区分
  • 对象池性能优化
  • 最大日志行数限制500行
  • SDF字体支持

2. 修改的文件

UniversalDebugTool.cs

添加了以下内容:

  1. 序列化字段 - Console页面的所有UI组件引用
  2. ConsoleModule实例 - 控制台模块对象
  3. 初始化代码 - 在InitializeDebugTool中创建和注册Console模块
  4. Update方法 - 调用consoleModule.Update()更新UI
  5. OnDestroy方法 - 清理控制台模块资源
  6. SetSDFFont支持 - 为Console模块应用字体

📋 需要在Unity中配置的UI

Unity Inspector 配置清单

在UniversalDebugTool组件的Inspector中需要配置以下字段

[控制台页面]
├── Console Page                    (GameObject)
├── Console Log Scroll Rect         (ScrollRect) 
├── Console Log Content             (RectTransform)
├── Console Detail Scroll Rect      (ScrollRect)
├── Console Detail Text             (TMP_Text)
├── Console Clear Button            (Button)
├── Console Lock Scroll Toggle      (Toggle)
├── Console Info Filter Toggle      (Toggle)
├── Console Warning Filter Toggle   (Toggle)
├── Console Error Filter Toggle     (Toggle)
├── Console Fatal Filter Toggle     (Toggle)
└── Console Log Item Prefab         (GameObject)

UI层次结构示例

ConsolePage
├── ControlPanel (HorizontalLayoutGroup)
│   ├── ClearButton
│   ├── LockScrollToggle
│   ├── Spacer (LayoutElement - FlexibleWidth)
│   ├── InfoFilterToggle
│   ├── WarningFilterToggle
│   ├── ErrorFilterToggle
│   └── FatalFilterToggle
│
├── LogArea (60% 高度)
│   └── LogScrollView (ScrollRect)
│       ├── Viewport
│       └── Content (VerticalLayoutGroup)
│           └── [日志项动态生成在这里]
│
└── DetailArea (40% 高度)
    └── DetailScrollView (ScrollRect)
        ├── Viewport
        └── Content
            └── DetailText

日志项预制件 (ConsoleLogItemPrefab)

创建一个预制件,结构如下:

LogItem (GameObject)
├── Toggle (Toggle组件)
├── Background (Image)
└── Label (TextMeshPro - Text)
    - RichText: 启用
    - Word Wrapping: 启用
    - Overflow: Overflow

🎨 UI组件配置建议

ControlPanel

  • Component: HorizontalLayoutGroup
  • Padding: (10, 10, 10, 10)
  • Spacing: 10
  • Child Force Expand: Width = false, Height = false

LogScrollView

  • Component: ScrollRect
  • Content: 指向LogContent
  • Vertical:
  • Horizontal:
  • Movement Type: Elastic
  • Inertia:
  • Scrollbar Visibility: Auto Hide

LogContent

  • Component: VerticalLayoutGroup
  • Child Alignment: Upper Center
  • Child Control Size: Height =
  • Child Force Expand: Width =
  • Spacing: 2

DetailScrollView

  • Component: ScrollRect
  • Vertical:
  • Horizontal:
  • Movement Type: Clamped

DetailText

  • Rich Text:
  • Wrapping:
  • Overflow: Overflow
  • Font Size: 14-16

Toggle组件

  • Is On: 根据默认值
  • Toggle Transition: Fade
  • 每个Toggle添加Label (TMP_Text)显示文本

🔧 代码集成

模块已自动集成

ConsoleModule已经在UniversalDebugTool中自动初始化和管理无需额外代码。

使用示例

// 1. 初始化调试工具会自动初始化Console
UniversalDebugTool.Init();

// 2. 设置字体(可选)
UniversalDebugTool.SetSDFFont(myFont);

// 3. 获取日志统计(可选)
if (UniversalDebugTool.InstanceExists)
{
    var console = UniversalDebugTool.Instance.consoleModule;
    if (console != null)
    {
        console.GetLogCount(out int info, out int warning, 
                           out int error, out int fatal);
        Debug.Log($"日志: Info={info}, Warn={warning}, " +
                 $"Error={error}, Fatal={fatal}");
    }
}

📊 与GameFramework对比

主要差异

项目 GameFramework MeowmentDebugTool
UI系统 OnGUI UGUI
渲染方式 即时模式(每帧重绘) 保留模式(按需刷新)
性能 中等 更优(对象池优化)
布局方式 GUILayout LayoutGroup + RectTransform
交互组件 GUILayout.Button/Toggle Button/Toggle组件
滚动视图 GUILayout.BeginScrollView ScrollRect组件
定制性 通过GUISkin 完全UGUI定制

实现等价性

完全实现的功能

  • 日志捕获Application.logMessageReceived
  • 日志分类Info/Warning/Error/Fatal
  • 过滤器4种日志类型独立过滤
  • 锁定滚动
  • 选中查看详情
  • 清除日志
  • 日志颜色区分
  • 最大行数限制

优化功能

  • 对象池(避免频繁创建销毁)
  • UGUI性能更好
  • 更灵活的布局系统

未实现的功能

  • 复制到剪贴板可以通过DetailText选择复制
  • SettingComponent持久化使用PlayerPrefs替代即可

🎯 后续步骤

  1. 在Unity中创建UI

    • 在Scene或Prefab中创建Console页面UI
    • 按照层次结构创建各个组件
    • 创建日志项预制件
  2. 配置引用

    • 在UniversalDebugTool组件Inspector中
    • 将所有Console相关UI组件拖拽到对应字段
  3. 测试

    • 运行游戏
    • 调用 UniversalDebugTool.Init()
    • 查看Console标签页
    • 测试各个过滤器和功能
  4. 调整样式(可选)

    • 修改颜色、字体大小
    • 调整布局间距
    • 优化日志项高度

⚠️ 注意事项

  1. 日志项预制件必须有Toggle组件
  2. ScrollRect的Content必须正确设置
  3. VerticalLayoutGroup的设置影响滚动性能
  4. 大量日志时注意性能已有500行限制
  5. 确保Console Page在初始化时是隐藏的

📚 参考文档