Uniyt脚本设置SpriteAtlas属性的的一些技巧

通过批处理脚本设置图集的一些参数

一下代码可以自动找到相关的目录下的图集,根据统一的参数配置一键设置好图集参数,并且立即打包所有图集,开发中比较实用的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class AtlasCompressEditor
{
[MenuItem("Package/Atlas/图集压缩_设置矫正", priority = 1003)]
public static void AltasCompress()
{
string[] guids = AssetDatabase.FindAssets("t:spriteatlas",new[] {"Assets/Art/UIAtlas"});
foreach (var id in guids)
{
var p = AssetDatabase.GUIDToAssetPath(id);
SpriteAtlas atlas = AssetDatabase.LoadAssetAtPath(p, typeof(SpriteAtlas)) as SpriteAtlas;
atlas.SetIncludeInBuild(true);

var packSetting = atlas.GetPackingSettings();
packSetting.blockOffset = 1;
packSetting.enableRotation = false;
packSetting.padding = 2;
packSetting.enableTightPacking = false;
atlas.SetPackingSettings(packSetting);

var texture_setting = atlas.GetTextureSettings();
texture_setting.generateMipMaps = false;
texture_setting.filterMode = FilterMode.Bilinear;
atlas.SetTextureSettings(texture_setting);

TextureImporterPlatformSettings android_setting = new TextureImporterPlatformSettings();
android_setting.name = BuildPipeline.GetBuildTargetName(BuildTarget.Android);
android_setting.overridden = true;
android_setting.textureCompression = TextureImporterCompression.Compressed;
android_setting.format = TextureImporterFormat.ASTC_6x6;

TextureImporterPlatformSettings phone_setting = new TextureImporterPlatformSettings();
phone_setting.name = BuildPipeline.GetBuildTargetName(BuildTarget.iOS);
phone_setting.overridden = true;
phone_setting.textureCompression = TextureImporterCompression.Compressed;
phone_setting.format = TextureImporterFormat.ASTC_6x6;
atlas.SetPlatformSettings(android_setting);
atlas.SetPlatformSettings(phone_setting);

AssetDatabase.SaveAssetIfDirty(atlas);
}
SpriteAtlasUtility.PackAllAtlases(EditorUserBuildSettings.activeBuildTarget);
}
}

解释和要点

1、AssetDatabase.FindAssets中可以增加对应的图集目录,代码会依次设置
2、SpriteAtlas.SetPackingSettings 设置图片资源的相关格式,图集也是一张图片可以使用图片压缩格式
3、SpriteAtlasUtility.PackAllAtlases 打包所有的图集
4、Sprite Atlas 版本 1 和 Sprite Atlas 版本 2 不兼容
5、本代码只能用于spriteatlasv1版本的图集设置,关于新版本的v2图集目前官方不支持通过脚本编辑 Sprite Atlas 版本 2,至此2024/07还未提供。
博主也是查了好多网上的资料才发现这点的,不是很明显,到目前为止博主还是建议使用Sprite Atlas 版本 1。希望能帮助到各位开发者。官网截图如下: