Skip to content

Wonderland6627/MergeTexturesTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎨 MergeTexturesTools

Unity 贴图合并编辑器扩展工具

一个功能强大、易于使用的 Unity 编辑器工具,用于可视化合并多个贴图到一张大贴图中,提升项目性能优化效率。

Unity Version License Version


✨ 功能亮点

🎯 核心功能

  • 📐 可视化编辑 - 在场景窗口中直观地拖拽和排列贴图,所见即所得
  • 🔍 智能筛选 - 根据 Shader 类型自动筛选场景中的物体,快速批量处理
  • 🌳 八叉树空间划分 - 使用八叉树算法对场景进行智能空间划分,优化合并策略
  • 💾 配置持久化 - 使用 ScriptableObject 保存合并配置,支持再次编辑和复用
  • 🤖 自动排布 - 一键自动排布贴图,支持平面装箱算法优化空间利用率
  • 👁️ 实时预览 - 实时预览合并结果,调整过程可视化
  • 📏 UV 网格显示 - 显示 UV 网格辅助自定义排布,精确定位
  • 🧲 智能吸附 - 拖拽辅助功能,自动吸附到 2 的次幂坐标点
  • ⚡ 性能优化 - 自动将贴图尺寸调整为 2 的次幂,符合 Unity 最佳实践

🛠️ 高级特性

  • 键盘微调 - 使用方向键精确调整选中贴图位置
  • 多格式支持 - 支持 JPG、PNG、TGA 等多种贴图格式输出
  • 资源路径提示 - 显示资源相对路径,方便定位和管理
  • 强制覆盖选项 - 支持重名文件强制覆盖,提高工作效率
  • 自定义贴图尺寸 - 灵活设置合并后贴图的尺寸,或使用自动匹配

🚀 快速开始

安装

  1. Assets/MergeTexturesTools 文件夹复制到你的 Unity 项目中
  2. 在 Unity 编辑器中打开菜单:Wonderland6627 > MergeTextureMainWindow
  3. 开始使用!

基本使用流程

  1. 选择物体 - 在场景中选择需要合并贴图的物体,或使用 Shader 筛选功能批量选择
  2. 添加配置 - 点击"一键加入选中物体"将物体添加到合并列表
  3. 排列贴图 - 在场景窗口中拖拽贴图进行排列,或使用"自动排布"功能
  4. 预览效果 - 在预览窗口中查看合并效果
  5. 保存配置 - 点击"新建配置"保存当前合并配置(可选)
  6. 执行合并 - 点击"合并贴图"生成最终的大贴图和对应的 Mesh 资源

📖 详细功能说明

可视化场景编辑

  • 拖拽移动 - 左键拖拽贴图进行位置调整
  • 选中高亮 - 点击贴图显示橙色边框,表示当前选中
  • 键盘微调 - 选中贴图后使用 ↑↓←→ 方向键进行像素级微调
  • 场景平移 - 中键拖拽平移整个场景视图
  • 坐标显示 - 实时显示贴图的坐标和尺寸信息

智能筛选系统

  • Shader 类型筛选 - 自动识别场景中所有 Shader 类型
  • 批量选择 - 根据 Shader 类型一键选择所有符合条件的物体
  • 八叉树划分 - 使用八叉树对选中物体进行空间划分,可视化显示划分结果

配置管理

  • 保存配置 - 将当前合并配置保存为 ScriptableObject 资源
  • 加载配置 - 从已保存的配置文件中加载之前的合并设置
  • 场景关联 - 配置自动关联到当前场景,便于管理

自动排布算法

  • 平面装箱 - 使用 Unity 内置的 PackTextures 算法自动排布
  • 大图优先 - 支持"大图在下"排序,优化排布效果
  • 空间优化 - 自动计算最小合并尺寸,提高空间利用率

📋 版本迭代历史

🌟 v1.1 (当前版本)

新增功能

  • ✨ 添加启动页面 (StartUpPage)
  • 🔧 对常用编辑器 API 进行封装扩展,提升代码复用性

改进

  • 🎨 优化用户界面交互体验
  • 📝 完善代码结构和注释

🎯 v1.0

重大更新

  • 🌳 八叉树空间划分 - 利用八叉树对场景进行划分,根据材质 Shader 类型筛选合并对象
  • 💾 配置持久化 - 使用 ScriptableObject 作为合并配置存档,方便再次编辑合并
  • 🔄 重构代码架构,提升可维护性

🎨 v0.5

新增功能

  • 🖼️ 添加新贴图格式自定义选项(JPG、PNG、TGA)
  • 📐 在可视化场景中显示 UV 网格,帮助自定义排布

改进

  • 🎯 优化贴图排布算法

🔧 v0.4

新增功能

  • 👁️ 预览窗口 - 添加预览窗口,所见即所得
  • 🔄 一键重新排布 - 添加"大图在下"一键重新排布功能
  • 📍 给合并信息添加属性的相对路径提示
  • ✅ 可以在面板中选中或移除合并对象

改进

  • 🎨 优化界面布局和交互

⚡ v0.3

新增功能

  • 📐 2 的次幂限制 - 限制新贴图大小为 2^N 长度的正方形,有助于 Unity 性能优化
  • 🧲 拖拽辅助 - 添加拖拽辅助和拖拽辅助提示(移动到 2^N 坐标点附近自动吸附)
  • 🎛️ 可以设置辅助灵敏度

改进

  • 📜 优化需要合并贴图列表滚动框

🎯 v0.2

新增功能

  • 🎨 添加选中图橘色边框提示
  • ⌨️ 可以使用小键盘方向键微调选中贴图
  • 📏 默认新贴图大小为最大贴图大小,可以在面板中修改
  • 🔄 新贴图大小可随着图片拖动变化,窗口左上角为原点
  • ⚙️ 添加面板设置,可以在面板中修改一些显示信息

🎉 v0.1 (初始版本)

核心功能

  • ✅ 选择想要合并贴图的物体,加入窗口显示面板,显示其贴图
  • 🖱️ 使用鼠标移动选中贴图,同步显示其 Rect 信息

🎮 使用技巧

高效工作流

  1. 批量处理 - 使用 Shader 筛选功能快速选择同类型物体
  2. 保存配置 - 对于复杂场景,建议先保存配置,方便后续调整
  3. 自动排布 - 对于简单场景,直接使用自动排布功能快速完成
  4. 手动微调 - 对于特殊需求,使用拖拽和键盘微调进行精确调整

性能优化建议

  • ✅ 启用"自动拉伸边长(2^n)"选项,确保贴图尺寸符合 Unity 最佳实践
  • ✅ 合理使用自动排布功能,提高空间利用率
  • ✅ 合并前检查贴图可读写性,确保合并过程顺利进行

📁 项目结构

MergeTexturesTools/
├── Assets/
│   └── MergeTexturesTools/
│       ├── MTConfig/          # 配置管理模块
│       │   ├── Editor/        # 编辑器脚本
│       │   └── MTConst.cs    # 常量定义
│       ├── MTHelper/          # 工具辅助模块
│       │   └── Editor/        # 工具类和扩展方法
│       ├── MTMain/            # 主窗口模块
│       │   └── Editor/        # 主窗口、场景、预览等核心功能
│       ├── MTOctree/          # 八叉树模块
│       │   └── Editor/        # 八叉树编辑器和实现
│       └── Resources/         # 资源文件(背景图、光标等)
└── README.md

🤝 贡献

欢迎提交 Issue 和 Pull Request!


📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情


👨‍💻 作者

Wonderland6627


如果这个项目对你有帮助,请给个 ⭐ Star!

Made with ❤️ for Unity Developers

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages