6.4 KiB
6.4 KiB
MeowmentDebugTool 新功能说明
更新日期
2025年12月30日
新增功能
1. 获取Debugger显示状态
新增了一个公共静态方法 IsDebuggerVisible(),用于获取Debugger的当前显示状态。
使用方法
// 获取Debugger是否正在显示
bool isVisible = UniversalDebugTool.IsDebuggerVisible();
if (isVisible)
{
Debug.Log("Debugger正在显示");
}
else
{
Debug.Log("Debugger已隐藏或未初始化");
}
方法说明
- 方法签名:
public static bool IsDebuggerVisible() - 返回值:
true- Debugger正在显示(主窗口或悬浮按钮可见)false- Debugger完全隐藏或未初始化
- 使用场景:
- 判断是否需要显示/隐藏Debugger
- 根据Debugger状态执行不同的逻辑
- 在截图或录屏前检查Debugger状态
2. 按钮分组功能
为调试按钮添加了分组功能,可以将按钮按功能分类显示,提高大量按钮时的使用体验。
使用方法
在使用 DebugButton 特性时,在第一个参数指定组名:
using MeowmentDebugTool;
#if MEOWMENT_DEBUG_TOOL
// 默认组
[DebugButton("默认", "我的按钮")]
public static void MyButton()
{
Debug.Log("按钮被点击");
}
// 玩家相关按钮
[DebugButton("玩家", "加金币")]
public static void AddGold()
{
Debug.Log("给玩家加了1000金币");
}
[DebugButton("玩家", "升级")]
public static void LevelUp()
{
Debug.Log("玩家升了1级");
}
// 关卡相关按钮
[DebugButton("关卡", "跳过当前关卡")]
public static void SkipLevel()
{
Debug.Log("跳过当前关卡");
}
[DebugButton("关卡", "解锁所有关卡", 0.8f, 0.6f, 0.2f)]
public static void UnlockAllLevels()
{
Debug.Log("解锁所有关卡");
}
#endif
注意:确保在文件顶部添加 using MeowmentDebugTool; 以便可以直接使用 DebugButton 特性。
特性参数说明
DebugButton 特性的新参数顺序:
DebugButtonAttribute(
string groupName = "默认", // 组名(新增)
string displayName = "", // 显示名称
float r = 0.8f, // 按钮颜色 R
float g = 0.8f, // 按钮颜色 G
float b = 0.8f // 按钮颜色 B
)
功能特点
- 自动分组: 系统会自动收集所有带有
DebugButton特性的方法,并按组名分类 - 组标题显示: 每个组会显示一个标题行,标题格式为:
━━━━━━ 组名 ━━━━━━ - 默认组: 如果不指定组名或组名为空,按钮会被归入"默认"组
- 组排序: "默认"组会排在最前面,其他组按字母顺序排列
- 一次显示所有: 所有组的按钮会在一个滚动视图中垂直显示,无需切换
界面布局
┌─────────────────────────────────┐
│ ━━━━━━ 默认 ━━━━━━ │ ← 组标题
│ [测试按钮1] │
│ [测试按钮2] │ ← 该组的按钮
│ │
│ ━━━━━━ 玩家 ━━━━━━ │ ← 组标题
│ [加金币] │
│ [升级] │
│ [满血复活] │ ← 该组的按钮
│ │
│ ━━━━━━ 关卡 ━━━━━━ │ ← 组标题
│ [跳过当前关卡] │
│ [重置关卡进度] │
│ [解锁所有关卡] │ ← 该组的按钮
│ ... │
└─────────────────────────────────┘
注意事项
-
兼容性: 这是一个破坏性更新,旧代码需要调整参数顺序
旧代码:
[DebugButton("按钮名称")]新代码 (需要添加组名):
[DebugButton("默认", "按钮名称")] -
组名建议:
- 使用简短明确的组名(如:玩家、关卡、道具、系统等)
- 相关功能的按钮放在同一组
- 常用功能建议放在"默认"组
-
性能: 分组功能不会影响性能,因为:
- 只在初始化和手动重载时扫描方法
- 所有按钮一次性创建,无需动态切换
示例代码
完整的使用示例请参考 Assets/Scenes/Scripts/Test.cs 文件。
向后兼容性说明
⚠️ 重要: DebugButton 特性的参数顺序已更改,旧代码需要手动调整。
如果你之前这样使用:
[DebugButton("我的按钮", 0.5f, 0.5f, 0.5f)]
现在需要改为:
[DebugButton("默认", "我的按钮", 0.5f, 0.5f, 0.5f)]
或者如果不需要自定义颜色:
[DebugButton("默认", "我的按钮")]
注意:请确保在文件顶部添加 using MeowmentDebugTool;
技术细节
CustomButtonsModule 的改动
- 添加了分组数据结构
Dictionary<string, List<ButtonInfo>> - 添加了分组UI容器的自动创建逻辑
- 修改了按钮加载流程,先分组再显示
- 添加了组切换功能和视觉反馈
UniversalDebugTool 的改动
- 添加了
IsDebuggerVisible()方法 - 修改了
DebugButtonAttribute的构造函数,添加了groupName参数 - 更新了文档注释
常见问题
Q: 如何知道当前有哪些组?
A: 在初始化时,控制台会输出所有找到的组及其按钮数量:
[CustomButtonsModule] 共找到 3 个按钮组
- 默认: 2 个按钮
- 玩家: 3 个按钮
- 关卡: 3 个按钮
Q: 能否动态添加组?
A: 可以,调用 ReloadCustomButtons() 方法即可重新扫描所有按钮并更新分组。
Q: 分组按钮的样式可以自定义吗?
A: 可以,分组按钮使用与普通按钮相同的预制件,可以通过修改预制件来自定义样式。
Q: IsDebuggerVisible() 什么情况下返回 false?
A: 以下情况会返回 false:
- Debugger 未初始化(未调用
Init()) - 主窗口和悬浮按钮都被隐藏
- Debugger GameObject 被销毁
更新日志
v1.1.0 (2025-12-30)
- ✨ 新增
IsDebuggerVisible()方法用于获取显示状态 - ✨ 新增按钮分组功能
- 🔧 修改
DebugButtonAttribute构造函数参数顺序(破坏性更新) - 📝 更新文档和示例代码