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

5.2 KiB
Raw Blame History

Console 控制台模块 UI 结构说明

概述

Console模块是一个基于UGUI的日志控制台用于实时显示Unity的日志信息Info/Warning/Error/Exception

功能特性

  • 实时捕获Unity日志Application.logMessageReceived
  • 日志分类显示Info/Warning/Error/Fatal
  • 日志过滤器(可以单独开关各类型日志)
  • 锁定滚动到底部
  • 点击日志查看详细堆栈信息
  • 清除所有日志
  • 日志颜色区分
  • 最大日志行数限制默认500行
  • 对象池优化性能

UI结构

Console Page 层次结构

ConsolePage (GameObject)
├── ControlPanel (水平布局)
│   ├── ClearButton (Button) - 清空日志按钮
│   ├── LockScrollToggle (Toggle) - 锁定滚动
│   ├── Spacer (空白区域)
│   ├── InfoFilterToggle (Toggle) - Info过滤器
│   ├── WarningFilterToggle (Toggle) - Warning过滤器
│   ├── ErrorFilterToggle (Toggle) - Error过滤器
│   └── FatalFilterToggle (Toggle) - Fatal过滤器
│
├── LogScrollView (ScrollRect) - 日志列表区域
│   └── LogContent (RectTransform) - 日志内容容器
│       └── [动态生成的日志项]
│
└── DetailScrollView (ScrollRect) - 详细信息区域
    └── DetailText (TMP_Text) - 显示选中日志的详细信息和堆栈

日志项预制件结构 (ConsoleLogItemPrefab)

LogItem (GameObject)
├── Toggle (Toggle组件) - 用于选中日志
├── Background (Image) - 背景
└── Label (TMP_Text) - 显示日志文本

序列化字段配置

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

Console页面字段

[Header("控制台页面")]
consolePage               // 控制台页面根对象
consoleLogScrollRect      // 日志列表ScrollRect
consoleLogContent         // 日志内容容器RectTransform
consoleDetailScrollRect   // 详情ScrollRect
consoleDetailText         // 详情文本TMP_Text
consoleClearButton        // 清空按钮
consoleLockScrollToggle   // 锁定滚动Toggle
consoleInfoFilterToggle   // Info过滤Toggle
consoleWarningFilterToggle    // Warning过滤Toggle
consoleErrorFilterToggle      // Error过滤Toggle
consoleFatalFilterToggle      // Fatal过滤Toggle
consoleLogItemPrefab      // 日志项预制件

UI组件要求

1. ControlPanel

  • 使用 HorizontalLayoutGroup
  • 建议添加 ContentSizeFitter
  • Padding: 10, 10, 10, 10
  • Spacing: 10

2. LogScrollView

  • ScrollRect 设置:
    • Vertical: true
    • Horizontal: false
    • Movement Type: Elastic
    • Scrollbar Visibility: Automatic If Needed
  • LogContent 需要 VerticalLayoutGroup
    • Child Alignment: Upper Center
    • Child Force Expand: Width
    • Child Control Size: Height
    • Spacing: 2

3. DetailScrollView

  • ScrollRect 设置:
    • Vertical: true
    • Horizontal: false
    • Movement Type: Clamped
  • 建议高度: 150-200
  • DetailText 设置:
    • Enable Word Wrapping
    • Overflow: Overflow
    • Enable Rich Text

4. Toggles

  • 每个Toggle需要一个Label (TMP_Text)
  • 建议宽度: 100-120
  • Toggle Group: 不需要(可以多选)

日志颜色配置

在 ConsoleModule 中默认的颜色:

Info:    Color.white (255, 255, 255)
Warning: Color.yellow (255, 255, 0)
Error:   Color.red (255, 0, 0)
Fatal:   Color(0.7f, 0.2f, 0.2f) (178, 51, 51)

性能优化

  1. 对象池机制: 日志项使用对象池,避免频繁创建销毁
  2. 最大行数限制: 默认500行防止内存溢出
  3. 按需刷新: 只在日志变化或过滤器改变时刷新显示
  4. Toggle优化: 使用Toggle而不是Button减少重绘

使用示例

在代码中获取日志统计

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}, Warning:{warning}, Error:{error}, Fatal:{fatal}");
    }
}

设置字体

UniversalDebugTool.SetSDFFont(myFont);
// 会自动应用到控制台模块

注意事项

  1. 日志项预制件: 必须包含 Toggle 和 TMP_Text 组件
  2. ScrollRect: 必须正确设置 Content 和 Viewport
  3. 性能: 大量日志时建议增加日志项的高度以减少可见数量
  4. 线程安全: 日志回调在主线程执行,无需担心线程问题
  5. 内存管理: 超过最大行数的日志会自动删除

与GameFramework的差异

特性 GameFramework (GUI) MeowmentDebugTool (UGUI)
UI系统 OnGUI (即时模式) UGUI (保留模式)
性能 每帧重绘 按需刷新
布局 GUILayout自动布局 RectTransform + LayoutGroup
交互 GUILayout.Button/Toggle Button/Toggle组件
对象池 不需要 使用对象池优化
滚动 GUILayout.BeginScrollView ScrollRect组件

未来扩展

可以考虑添加的功能:

  • 搜索/过滤日志内容
  • 导出日志到文件
  • 日志标签/分类
  • 日志统计图表
  • 复制日志到剪贴板
  • 日志时间范围过滤