# Unity-YKToolkit **Repository Path**: titd/Unity-YKToolkit ## Basic Information - **Project Name**: Unity-YKToolkit - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-24 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 【表面上是插件,其实它是 Unity 开发者的刮胡刀,工具箱大更新,架构重写】 https://www.bilibili.com/video/BV1dnigBLEbc/?share_source=copy_web&vd_source=2cb1a5658a3ccf09b304d890a043976d # Unity Pro Toolbox 更新日志 ## [v2.0] - 2025-12-31 ### 🎉 重大更新 - 架构重构 #### 1. **全新模块化架构系统** - ✅ 引入 `ToolModule` 抽象基类,统一所有功能模块接口 - ✅ 实现 `ToolContext` 上下文系统,解耦 Unity API 依赖 - ✅ 添加 `ToolRegistry` 自动注册系统,新模块自动发现无需手动注册 - ✅ UI 与逻辑完全分离,所有业务逻辑放在 `*Logic.cs`,UI 放在 `*Module.cs` - ✅ 支持模块生命周期管理(`OnInitialize`、`OnCleanup`) - ✅ 模块按分类(Category)自动分组显示 - ✅ 兼容旧版模块系统,平滑迁移 #### 2. **场景状态快照系统** - ✅ 支持创建场景状态快照,保存 GameObject 位置、旋转、缩放等完整状态 - ✅ 一键回滚到任意历史快照 - ✅ 快照对比功能,可视化显示两个快照之间的差异 - ✅ 支持快照命名和描述 - ✅ 异步回滚机制,大场景回滚时显示进度条 #### 3. **代码热重载模块** - ✅ 自动检测代码编译状态 - ✅ 编译完成后自动重载场景(可选) - ✅ 编译统计信息显示(编译次数、总耗时、平均耗时) - ✅ 支持 Unity 2021.2+ 版本 - ✅ 可配置的自动重载策略 #### 4. **资产使用情况扫描** - ✅ 扫描项目中未被场景/Prefab 引用的资产 - ✅ 智能区分:未引用 / 仅编辑器引用 / 仅测试引用 / 运行时引用 - ✅ 白名单机制,保护重要资产不被误删 - ✅ 批量删除未使用资产(带预览) - ✅ 搜索过滤功能,快速定位目标资产 #### 5. **编辑器时间统计 & 行为分析** - ✅ 统计场景编辑时间,记录每次编辑会话 - ✅ 烘焙耗时历史记录,追踪每次烘焙的耗时 - ✅ 常用工具使用排行,了解最常用的功能 - ✅ 最慢操作记录,识别性能瓶颈 - ✅ 多标签页界面,数据分类展示 #### 6. **桌面宠物模块** - ✅ 可拖拽的桌面宠物窗口 - ✅ 宠物动画播放(待机、说话动画) - ✅ 点击互动,显示提示信息 - ✅ 右键关闭功能 - ✅ 窗口位置自动保存 #### 7. **可视化层级增强** - ✅ 在 Project 窗口中显示资产预览图标 - ✅ 增强 Hierarchy 窗口显示效果 - ✅ 自定义图标和颜色标记 #### 8. **资产依赖分析** - ✅ 分析资产的引用关系 - ✅ 查找资产的所有依赖项 - ✅ 可视化依赖图 ### 🔧 改进优化 #### 1. **搜索功能** - ✅ 工具栏添加搜索框,实时过滤模块 - ✅ 支持按模块名称搜索 - ✅ 搜索时高亮匹配结果 #### 2. **统计功能** - ✅ 工具栏添加统计按钮 - ✅ 显示模块总数、分类统计 - ✅ 显示工具使用频率统计 #### 3. **布局优化** - ✅ 支持双列响应式布局(窗口宽度超过阈值时自动切换) - ✅ 可配置的双列布局阈值 - ✅ 模块按分类折叠/展开 #### 4. **主题系统** - ✅ 支持自动/亮色/暗色主题切换 - ✅ 根据 Unity 编辑器主题自动适配 - ✅ 主题设置持久化保存 #### 5. **工具类封装** - ✅ `EditorSelectionUtil`:封装 Selection 操作 - ✅ `AssetUtil`:封装 AssetDatabase 操作 - ✅ `UndoUtil`:封装 Undo 操作 - ✅ `ToolboxSettings`:统一设置管理 ### 📝 技术细节 #### 架构设计 - 使用 `TypeCache.GetTypesDerivedFrom()` 自动发现模块 - `ToolContext` 封装 Unity API,便于测试和复用 - 模块包装器(`ModuleWrapper`)统一新旧系统接口 - 支持模块分类和排序 #### 数据持久化 - 模块展开状态保存到 `EditorPrefs` - 分类展开状态单独保存 - 主题和布局设置持久化 #### 性能优化 - 模块按需初始化,延迟加载 - 搜索过滤使用 LINQ,性能优化 - 异步操作使用协程,避免阻塞主线程 --- ## [v1.7] - 2025-12-26 ### 🎉 新增功能 #### 1. **模块折叠系统** - ✅ 所有功能模块默认折叠状态,节省界面空间 - ✅ 点击模块标题栏左侧的折叠按钮可展开/折叠 - ✅ 折叠状态自动保存,下次打开窗口时恢复 - ✅ 拖拽时自动禁用折叠按钮,避免冲突 #### 2. **拖拽排序功能** - ✅ 支持通过拖拽重新排列功能模块顺序 - ✅ 拖拽手柄图标(网格图标或三条横线)位于模块标题栏中间 - ✅ 拖拽时显示视觉反馈: - 被拖拽的模块高亮显示 - 目标位置显示蓝色插入指示线 - ✅ 模块顺序自动保存到 EditorPrefs,下次打开时恢复 - ✅ 拖拽后标题序号自动更新(如:拖拽后 "1. 智能批量材质生成" 变为 "2. 智能批量材质生成") ### 🔧 改进优化 #### 1. **图标加载系统** - ✅ 添加安全的图标加载方法 `GetIconSafely()`,避免警告信息 - ✅ 支持多个备选图标名称,提高兼容性 - ✅ 图标加载失败时自动绘制备用拖拽手柄(三条横线) - ✅ 临时禁用警告日志,避免控制台污染 #### 2. **界面优化** - ✅ 调整模块间距,使界面更紧凑(用户可自定义) - ✅ 优化标题栏布局和字体大小 - ✅ 改进拖拽手柄的视觉反馈(悬停时高亮) #### 3. **事件处理优化** - ✅ 改进拖拽事件处理逻辑,确保拖拽功能稳定可靠 - ✅ 优化事件处理顺序,避免折叠按钮和拖拽功能冲突 - ✅ 添加鼠标移出窗口时的状态重置 ### 🐛 问题修复 - ✅ 修复拖拽功能无法正常工作的问题 - ✅ 修复图标加载时的警告信息 - ✅ 修复拖拽后标题序号不更新的问题 - ✅ 修复模块间距过大导致界面浪费空间的问题 ### 📝 技术细节 #### 代码结构改进 - 重构模块系统,使用 `ModuleInfo` 类统一管理模块信息 - 将模块绘制逻辑拆分为独立的 `DrawModule1()` 到 `DrawModule12()` 方法 - 添加 `InitializeModules()` 方法统一初始化模块系统 - 添加 `HandleGlobalDragEvents()` 统一处理拖拽结束事件 #### 数据持久化 - 模块顺序保存到 `EditorPrefs`(键名:`UnityProToolbox_ModuleOrder`) - 每个模块的折叠状态单独保存(键名:`UnityProToolbox_ModuleExpanded_{模块ID}`) --- ## [v1.6] - 之前版本 ### 核心功能 - 智能批量材质生成 - 物理对齐 - 批量重命名 - 资产替换 - 布局助手 - 随机变换 - 系统清理 - 快速对齐与等距分布 - 批量静态设置 - 查找重复物体 - 烘焙精度双档切换(增强版) - 快速创建助手 --- ## 使用说明 ### 折叠/展开模块 点击模块标题栏左侧的折叠按钮(三角形图标) ### 拖拽排序模块 1. 将鼠标移到模块标题栏中间的拖拽手柄上(网格图标或三条横线) 2. 按住鼠标左键并拖动 3. 拖动到目标位置后释放鼠标 4. 模块会自动移动到新位置,标题序号也会自动更新 ### 自定义间距 如需调整模块间距,可修改 `DrawDraggableModule()` 方法中的 `EditorGUILayout.Space()` 参数值 --- **开发者**: RepinSKY **版本**: v2.0 **最后更新**: 2025-12-31