SpriteAtlas是unity新的图集,取代了旧图集Sprite Packer
图集打包的意义:
1、减少DrawCall,一张图集只需要一次DrawCall
2、图集将一张或者多张图片合成一张2的幂次方的图片,减少资源大小
Sprite Packer缺点:
旧版Sprite Packer在性能和易用性上对比Sprite Atlas存在诸多不足,比如无法分别对不同图集修改不同质量、无法获取图集里的图片等等。
SpriteAtlas的属性面板:
创建一个SpriteAtlas
var sa = new SpriteAtlas(); AssetDatabase.CreateAsset(sa, assetPath);
设置SpriteAtlas的属性
SpriteAtlasPackingSettings packset = new SpriteAtlasPackingSettings() { blockOffset = 1, enableRotation = false, enableTightPacking = false, padding = 4 }; sa.SetPackingSettings(packset);
设置SpriteAtlas的图片参数
SpriteAtlasTextureSettings texSet = new SpriteAtlasTextureSettings() { readable = true, filterMode = FilterMode.Bilinear, sRGB = true, generateMipMaps = true }; sa.SetTextureSettings(texSet);
给SpriteAtlas加上精灵文件夹
Object texture = AssetDatabase.LoadMainAssetAtPath(assetDataPath); sa.Add(new Object[] { texture });
注意事项:
1、UGUI打包SpriteAtlas不能勾选Tight Packing,否则图片会串,原因是Unity UI始终为每个子画面使用一个四边形...因此,它只能使用方形,非旋转的子画面。
而Sprite Renderer可以勾选Tight Packing并且没问题,是因为Sprite Renderer会基于精灵的非透明部分生成网格,并带有大量三角形(不一定是一件好事),但可以让您使用旋转和/或紧密堆积的精灵。
2、Spine的图集png请不要打到SpriteAtlas,因为内存会变两份,因为Spine是直接读取图集png的,不会自动关联到SpriteAtlas里的图片。