Unity编辑器拓展之二十二:基于TexturePacker的一键打图集工具

NGUI使用TexturePacker打图集是一件频繁且费时的工作,只要美术稍一更新图片,就需要重新打图集,而且每次打图集的操作其实都是一样的重复劳动,基于此,开发工具批量打图集时很有必要的。

使用TexturePacker打图集,会输出两个文件,一个PNG合图,一个txt图集信息文件,而到Unity中使用UIAtlas,则需要一个Material材质文件和一个Prefab预制体文件,这两个文件也由工具生成。

鉴于项目不是从一开始就用该工具进行打图集工作的,因此这些文件的命名不具有统一的规范,因此使用一个配置文件来记录每个图集的输出文件信息。

![这里写图片描述](https://img-
blog.csdn.net/20180909133119352?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2OTk5NTA5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

Atlas.ini图集配置文件

该文件以CSV格式进行配置,共有5列,图片文件夹相对路径、PNG合图输出路径、txt图集信息文件输出路径、UIAtlasPrefab输出路径、Material材质输出路径,后面四个输出路径都是基于Unity工程的Assets目录。

命令行打图集

TexturePacker支持使用命令行打图集

$TexturePacker_PATH $imgDir --max-size 4096 --allow-free-size --format unity --size-constraints POT --shape-padding 2 --border-padding 2 --common-divisor-x 1 --common-divisor-y 1 --disable-rotation --algorithm MaxRects --opt RGBA8888 --scale 1 --scale-mode Smooth --smart-update --sheet $ASSETS_PATH$atlasPng --data $ASSETS_PATH$atlasData

详细命令行介绍请自行搜索相关文档

一键批量设置图片资源设置

PNG合图文件输出到Unity后,通过使用Unity提供的TextureImporter类和TextImporterPlatformSetting类进行图片设置

生成材质和Prefab问阿金并自动关联引用

材质使用的Shader是“Unlit/Transparent
Colored”,mainTexture则为TexturePacker输出的合图,创建Prefab,并Add UIAtlas
Component,给UIAtlas组件导入texture和txt图集信息文件

NGUIEditorTools.ImportTexture(uiAtlas.texture, false, false, !uiAtlas.premultipliedAlpha);
NGUIJson.LoadSpriteData(uiAtlas, atlasTextAsset);

UIAtlas信息拷贝

创建图集后,有时需要拷贝另一个图集的border和padding信息,例如两个图集内容其实是一直的,只是皮肤颜色不一样(换肤图集),因此这两个图集的border和padding数据是一样的,提供工具进行数据拷贝。

![这里写图片描述](https://img-
blog.csdn.net/20180909131827960?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2OTk5NTA5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

清理Editor进度条

为避免Atlas.ini配置错误,导致打图集中断,而EditorUtility.DisplayProgressBar进度条无法清除,提供Editor进度条清理功能,菜单栏Tools->清理进度条

工程下载

GitHub地址: https://github.com/JingFengJi/CreateAtlas

以上知识分享,如有错误,欢迎指出,共同学习,共同进步。