4.8 KiB
4.8 KiB
Console模块 - 运行时UI创建完成
✅ 已完成
Console模块的UI已经添加到RuntimeUIGenerator中,会在运行时自动创建。
🎯 使用方法
1. 直接运行测试
using UnityEngine;
using MeowmentDebugTool;
public class TestDebugTool : MonoBehaviour
{
void Start()
{
// 初始化调试工具(会自动创建所有UI包括Console)
UniversalDebugTool.Init();
// 测试各种日志
Debug.Log("这是一条普通日志");
Debug.LogWarning("这是一条警告日志");
Debug.LogError("这是一条错误日志");
// 测试异常
try
{
throw new System.Exception("测试异常");
}
catch (System.Exception e)
{
Debug.LogException(e);
}
}
void Update()
{
// 按空格键生成测试日志
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log($"测试日志 - 帧数: {Time.frameCount}");
}
}
}
2. 运行游戏
- 创建一个空GameObject
- 添加TestDebugTool脚本
- 运行游戏
- Console页面会自动出现在标签页中
3. 测试功能
- ✅ 清空按钮: 清除所有日志
- ✅ 锁定滚动: 自动滚动到最新日志
- ✅ 过滤器: 显示/隐藏不同类型的日志
- Info (白色)
- Warning (黄色)
- Error (红色)
- Fatal (深红色)
- ✅ 点击日志: 在下方显示详细信息和堆栈跟踪
- ✅ 实时计数: Toggle显示每种日志的数量
📋 UI结构说明
RuntimeUIGenerator会创建以下结构:
ConsolePage
├── ControlPanel (控制面板 - 高度80)
│ ├── ConsoleClearButton (清空按钮)
│ ├── ConsoleLockScrollToggle (锁定滚动)
│ ├── Spacer (弹性空白)
│ ├── ConsoleInfoFilterToggle (Info过滤)
│ ├── ConsoleWarningFilterToggle (Warning过滤)
│ ├── ConsoleErrorFilterToggle (Error过滤)
│ └── ConsoleFatalFilterToggle (Fatal过滤)
│
├── LogArea (60% 高度)
│ └── ConsoleLogScrollView
│ └── Viewport
│ └── ConsoleLogContent (垂直布局组)
│ └── [日志项动态生成]
│
└── DetailArea (40% 高度)
└── ConsoleDetailScrollView
└── Viewport
└── Content
└── ConsoleDetailText (详细信息)
🎨 样式配置
颜色方案
- 背景: (12, 12, 12) - 深灰色
- 日志区域: (5, 5, 5) - 更深的灰色
- 详情区域: (8, 8, 8) - 中等深灰色
- 日志项背景: (12, 12, 12)
- 日志项选中: (25, 35, 45) - 蓝灰色
日志颜色(ConsoleModule中定义)
- Info: (255, 255, 255) - 白色
- Warning: (255, 255, 0) - 黄色
- Error: (255, 0, 0) - 红色
- Fatal: (178, 51, 51) - 深红色
字体大小
- Toggle标签: 24
- 日志项: 22
- 详情文本: 24
🔧 自定义配置
如果需要修改样式,可以在RuntimeUIGenerator.cs中找到CreateConsolePage方法进行调整:
修改日志项高度
// 在CreateConsoleLogItemPrefab方法中
rect.sizeDelta = new Vector2(0, 30); // 改为你想要的高度
修改区域比例
// 在CreateConsolePage方法中
logAreaLayout.flexibleHeight = 3; // 日志区域权重
detailAreaLayout.flexibleHeight = 2; // 详情区域权重
修改最大日志数
// 在ConsoleModule.cs构造函数中
private int maxLine = 500; // 改为你想要的数量
🚀 性能提示
- 默认500行限制: 超过的日志会自动删除
- 对象池优化: 日志项会被重用,不会频繁创建销毁
- 按需刷新: 只在日志变化或过滤器改变时刷新UI
- 适中的日志项高度: 30像素平衡了可读性和性能
📱 移动端建议
如果在移动设备上运行:
// 在CreateConsoleLogItemPrefab中调整
labelTmp.fontSize = 28; // 增大字体
rect.sizeDelta = new Vector2(0, 40); // 增加高度
🐛 调试技巧
查看Console模块是否初始化成功
if (UniversalDebugTool.InstanceExists)
{
var console = UniversalDebugTool.Instance.GetType()
.GetField("consoleModule", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
?.GetValue(UniversalDebugTool.Instance);
if (console != null)
{
Debug.Log("✅ Console模块已初始化");
}
}
检查UI是否创建
在Hierarchy中查找:
- UniversalDebugTool_Canvas
- MainWindow
- ContentContainer
- ConsolePage ← 应该能找到这个
- ContentContainer
- MainWindow
✨ 完成!
现在你可以直接运行游戏测试Console模块了!
所有的UI都会在调用 UniversalDebugTool.Init() 时自动创建。
享受调试吧! 🎉