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

3.5 KiB
Raw Blame History

MeowmentDebugTool 模块化重构说明

重构概述

已将 UniversalDebugTool 的4个主要功能模块分离成独立的脚本文件使代码结构更清晰、更易维护。

新增文件

1. IDebugModule.cs

  • 作用: 调试模块的基础接口
  • 方法:
    • Initialize(): 初始化模块
    • GetPage(): 获取模块的UI页面GameObject
    • GetModuleName(): 获取模块名称

2. ParametersModule.cs

  • 作用: 参数查看模块,显示设备和系统信息
  • 主要功能:
    • 显示设备信息(设备名称、型号、处理器等)
    • 显示系统信息Unity版本、平台、分辨率、图形设备等
    • 复制信息到剪贴板
    • 刷新信息

3. CustomButtonsModule.cs

  • 作用: 自定义按钮模块通过反射加载标记为DebugButton的方法
  • 主要功能:
    • 自动扫描并加载所有带 [DebugButton] 特性的静态方法
    • 动态创建按钮UI
    • 设置SDF字体
    • 支持自定义按钮回调
    • 点击按钮后自动关闭调试窗口

4. ToolbarModule.cs

  • 作用: 工具栏模块,提供时间调整等工具
  • 主要功能:
    • 时间调整滑块(支持秒和分钟显示)
    • 增加/减少时间按钮
    • 可扩展的游戏时间调整接口

5. SettingsModule.cs

  • 作用: 设置模块,提供分辨率设置等功能
  • 主要功能:
    • 自定义窗口分辨率
    • 重置为默认分辨率
    • 实时显示当前窗口尺寸

UniversalDebugTool.cs 的改动

主要变化

  1. 移除了具体实现代码

    • 参数查看功能 → ParametersModule
    • 自定义按钮功能 → CustomButtonsModule
    • 工具栏功能 → ToolbarModule
    • 分辨率设置功能 → SettingsModule
  2. 新增模块管理

    private ParametersModule parametersModule;
    private CustomButtonsModule customButtonsModule;
    private ToolbarModule toolbarModule;
    private SettingsModule settingsModule;
    private List<IDebugModule> allModules = new List<IDebugModule>();
    
  3. 初始化流程

    • InitializeDebugTool(): 创建所有模块实例并注册页面
    • InitializeAllModules(): 调用各模块的Initialize方法
  4. 保留的公共API

    • CopyDeviceInfoToClipboard() - 委托给 ParametersModule
    • CopySystemInfoToClipboard() - 委托给 ParametersModule
    • RefreshAllInfo() - 委托给 ParametersModule
    • SetCustomButtonCallback() - 委托给 CustomButtonsModule
    • ReloadCustomButtons() - 委托给 CustomButtonsModule

优势

  1. 职责分离: 每个模块只负责一个功能领域
  2. 易于维护: 修改某个功能时只需要编辑对应的模块文件
  3. 可扩展性: 添加新模块只需实现 IDebugModule 接口
  4. 代码清晰: UniversalDebugTool.cs 现在主要负责协调各模块,代码更简洁

使用方式

使用方式完全不变所有现有的API和功能保持兼容

// 初始化调试工具
UniversalDebugTool.Init();

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

// 刷新信息
UniversalDebugTool.Instance.RefreshAllInfo();

// 自定义按钮仍然使用相同的特性
[DebugButton("测试按钮")]
public static void TestMethod()
{
    Debug.Log("测试");
}

未来扩展

如果需要添加新的调试功能模块,只需:

  1. 创建新的类并实现 IDebugModule 接口
  2. UniversalDebugTool.InitializeDebugTool() 中实例化并添加到 allModules 列表
  3. 调用 InitializeAllModules() 会自动初始化新模块