PS中导出切图到Untiy生成UGUI界面或场景
- PS中组名尽量不要重名(虽然1.1.0版本已经优化此功能,但建议还是不要重名)
- PS中同一个组下图层不要重名!!!(一个图层就是一张图,重名会导致只保存其中一个)
-
通过UnityPackageManager导入包
-
将
ExportToPNGps脚本放在PhotoShop软件Scripts文件夹 -
PS中操作
Write Layer Pngs将ps中图层导出pngIgnore hidden Layer忽略隐藏图层 ,如果勾选则不导出PS中隐藏图层Write a template PNG写入一张模板User groups是否使用组,勾选会按PS组导出Write Json是否导出json, Unity中会用到Trim Whitespace是否去除空白,不勾选则导出原始画布尺寸
等待一段时间之后,在对应的文件夹会生成相应的资源文件
tip:添加快捷键
-
将生成的文件导入Unity中,然后将图片格式设置成
Sprite -
选中生成的
xxx.ps.data,然后右键PSDTools/PSD2Scene或者PSDTools/PSD2UGUI生成界面
- 更新了
ps脚本(ExportToPNG),修复当组名有重复的情况,导出图路径和json文件路径错误问题, 需替换之前的脚本 - 重新命名了下
ps脚本(ExportToPNG)的version,保持跟插件同步,现在都是1.1.0 - 删除了Sample示例
-
增加了当未找到图时两个回调事件,方便使用通用的小图
/// <summary> /// 当创建2d找不到png时,响应事件 返回值true表示打印错误路径信息,false表示忽略错误 /// </summary> public static event System.Func<string, SpriteRenderer, bool> OnMissingPngWith2D; /// <summary> /// 当创建UI找不到png时,响应事件 返回值true表示打印错误路径信息,false表示忽略错误 /// </summary> public static event System.Func<string, Image, bool> OnMissingPngWithUI; //使用示例 [InitializeOnLoadMethod] static void InitMethod() { //监听psd创建通用小物体 PSDCreateor.OnMissingPngWith2D -= OnMissingPng; PSDCreateor.OnMissingPngWith2D += OnMissingPng; } private static bool OnMissingPng(string pngPath, SpriteRenderer sr) { if (pngPath.Contains("Common", StringComparison.OrdinalIgnoreCase)) { string fileName = Path.GetFileName(pngPath); string newPath = $"Assets/Assetbundle/sprites/common/{fileName}"; var sp = (Sprite)AssetDatabase.LoadAssetAtPath(newPath, typeof(Sprite)); if (sp != null) { sr.sprite = sp; } else { Debug.LogError("没有找到通用图:" + newPath); } } return false; }
- 之前保存为.ps.json格式,现在改成.ps.data格式(.json会默认为unity的textasset,会参与打AssetBundle, .data则不会,参考:Unity - Manual: Text assets (unity3d.com))
- 不在自动生成Prefab预制体(自己手动拖一下吧)
- 调整代码,将菜单order=1500
- 修改成UnityPackage
- 修改了json结构,更加清晰明了
- 添加提示:同一个组下有相同图层名,导致未能正确保存问题
- 修复User groups(按组导出)时没有按照ps中结构正确生成组的bug
- 添加了导出png图片过大问题,也就是导出时写入了xmp数据导致图片内存异常大
❤️ ❤️ ❤️ ❤️ ❤️
Spine 2D - LayersToPNG.jsx fix for Photoshop CC (github.com)
由于使用了Newtonsoft.Json(至少版本>=unity2021.3.16自带了)
如果提示缺失该程序集找到PSD2Unity下的Editor/NewtonsoftJson~把后面的~去除即可






