6.6 KiB
6.6 KiB
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
添加了以下内容:
- 序列化字段 - Console页面的所有UI组件引用
- ConsoleModule实例 - 控制台模块对象
- 初始化代码 - 在InitializeDebugTool中创建和注册Console模块
- Update方法 - 调用consoleModule.Update()更新UI
- OnDestroy方法 - 清理控制台模块资源
- 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替代即可)
🎯 后续步骤
-
在Unity中创建UI
- 在Scene或Prefab中创建Console页面UI
- 按照层次结构创建各个组件
- 创建日志项预制件
-
配置引用
- 在UniversalDebugTool组件Inspector中
- 将所有Console相关UI组件拖拽到对应字段
-
测试
- 运行游戏
- 调用
UniversalDebugTool.Init() - 查看Console标签页
- 测试各个过滤器和功能
-
调整样式(可选)
- 修改颜色、字体大小
- 调整布局间距
- 优化日志项高度
⚠️ 注意事项
- 日志项预制件必须有Toggle组件
- ScrollRect的Content必须正确设置
- VerticalLayoutGroup的设置影响滚动性能
- 大量日志时注意性能(已有500行限制)
- 确保Console Page在初始化时是隐藏的
📚 参考文档
- CONSOLE_MODULE_GUIDE.md - 详细的UI结构和配置指南
- REFACTORING_NOTES.md - 模块化重构说明