Awesome
Unity编辑器拓展之二十七:TextMeshPro的TMP_SpriteAsset图文混排图集快捷更新工具
1.TextMeshPro的SpriteAsset制作
此文不再赘述,参考此文:https://blog.csdn.net/qq_37057633/article/details/81120583
2.工具使用场景
当图文混排图集需要加一个新图时,需要重新按照上文的流程重新打一遍Json(Array)格式和一遍Unity-Texture2D Sprite格式的,打完之后,图集里的图文位置就会发生变化,TMP_SpriteAsset里存储的spriteGlyphTable和spriteCharacterTable并不会自动更新(包括旧的sprite相关数据和新增的sprite数据),而且旧的图文混排图集里的Sprite ID也应该保持不变,如果我们手动修改了Sprite的GlyphMetrics数据,这个数据也会被重打的覆盖掉,使得之前的数据丢失。那么,开发一款快捷更新图文混排的工具就十分有必要。
3.工具介绍
3.1 工具界面
3.2 工具功能
1.缓存数据
主要是缓存旧的图集数据,spriteGlyphTable和spriteCharacterTable
2.一键打Json格式图集
使用命令行打图集,此文不再赘述,参考:https://blog.csdn.net/u014065445/article/details/54289787
使用命令行打json格式文件
3.一键打Unity格式图集
使用命令行打Unity格式图集
/// <summary>
/// 打Unity格式图集
/// </summary>
private void UnitySpriteTexturePacker()
{
curTime = System.DateTime.Now;
//获取打Unity格式的TexturePacker命令
string cmd = TexturePackerCommond.GetPackCommond(arangeSpritesFolderPath,arrangeIconAtlasPngPath,arrangeIconAtlasTpsheetFilePath);
//使用ShellHelper生成一个ShellRequest对象
ShellHelper.ShellRequest request = ShellHelper.ProcessCommand(cmd,null);
EditorUtility.DisplayProgressBar("批量处理中...","Shell脚本生成Json图集信息...", 0);
//注册命令执行完回调
request.onDone += ()=>
{
{
//打包结束
EditorUtility.DisplayProgressBar("批量处理中...","Shell脚本执行完毕...开始打图集...", 0);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
CreateUIAtlas();
}
};
//注册命令执行错误的回调
request.onError += ()=>
{
Debug.LogError("Texture Packer Error!!! Please Check Your Config");
EditorUtility.ClearProgressBar();
};
}
4.数据更新
解析Tpsheet格式文件,从中拿到所以Sprite的GlyphRect数据,【注意】Tpsheet文件中Sprite的GlyphRect数据是以SpriteName区分的,因此TMP_SpriteAsset里的spriteCharacterTable里的name一定要正确,不然数据会错位。
4.使用说明
1.TexturePacker_PATH更改为自己电脑的TexturePacker路径
2.工具开发环境是mac端,windows端下自行类比修改
3.需要导入TexturePackerImporter工具配合TexturePacker打出来的图集使用
4.代码中的路径自行修改
5.工具仓库地址
https://github.com/JingFengJi/UpdateSpriteAssetTool.git
以上知识分享,如有错误,欢迎指出,共同学习,共同进步。
最近在用hexo 和 github page搭 个人博客,地址如下: http://www.jingfengji.tech/ 欢迎大家关注。
最近的一些博客 还是会更新在 CSDN这边,后续以自己个人的博客站点会主。