版权说明:本文为博主原创文章,转载需注明出处
环境 Unity 2018.3.9f1
当项目导入大量图片资源时,手动打图集设置参数实在是件费时费力的事,所以自动将图片资源打成图集就十分必要了。
首先看一下Sprite Atlas面板
Objects for Packing就是打成图集的资源列表,可指定纹理,精灵和文件夹,代码中可以通过扩展方法SpriteAtlas.Add方法进行设定。
写一个小样例
using System.IO;
using UnityEditor;
using UnityEditor.U2D;
using UnityEngine;
using UnityEngine.U2D;
public class AutoSetAtlasContent : Editor
{
private static string _atlasPath = "Assets/Atlas/Atlas.spriteatlas";
private static string _texturePath = "Assets/Texture";
[MenuItem("Tools/AutoSetAtlas")]
static void AutoSetAtlasContents()
{
SpriteAtlas atlas = new SpriteAtlas();
// 设置参数 可根据项目具体情况进行设置
SpriteAtlasPackingSettings packSetting = new SpriteAtlasPackingSettings()
{
blockOffset = 1,
enableRotation = false,
enableTightPacking = false,
padding = 2,
};
atlas.SetPackingSettings(packSetting);
SpriteAtlasTextureSettings textureSetting = new SpriteAtlasTextureSettings()
{
readable = false,
generateMipMaps = false,
sRGB = true,
filterMode = FilterMode.Bilinear,
};
atlas.SetTextureSettings(textureSetting);
TextureImporterPlatformSettings platformSetting = new TextureImporterPlatformSettings()
{
maxTextureSize = 2048,
format = TextureImporterFormat.Automatic,
crunchedCompression = true,
textureCompression = TextureImporterCompression.Compressed,
compressionQuality = 50,
};
atlas.SetPlatformSettings(platformSetting);
AssetDatabase.CreateAsset(atlas, _atlasPath);
// 1、添加文件
DirectoryInfo dir = new DirectoryInfo(_texturePath);
// 这里我使用的是png图片,已经生成Sprite精灵了
FileInfo[] files = dir.GetFiles("*.png");
foreach (FileInfo file in files)
{
atlas.Add(new[] {AssetDatabase.LoadAssetAtPath<Sprite>($"{_texturePath}/{file.Name}")});
}
// 2、添加文件夹
Object obj = AssetDatabase.LoadAssetAtPath(_texturePath, typeof(Object));
atlas.Add(new[] {obj});
AssetDatabase.SaveAssets();
}
}
这样就可以在指定文件夹下创建一个新的SpriteAtlas,并将指定文件夹下的资源都配置到SpriteAtlas中了。
代码中的配置参数就不多说了,有兴趣可以到官网上去查看。
官网链接:
SpriteAtlasPackingSettings
SpriteAtlasTextureSettings
TextureImporterPlatformSettings