版權說明:本文為博主原創文章,轉載需注明出處
環境 Unity 2018.3.9f1
??當項目導入大量圖片資源時,手動打圖集設置參數實在是件費時費力的事,所以自動將圖片資源打成圖集就十分必要了。
??首先看一下Sprite Atlas面板
SpriteAtlasWindow.png
??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中了。
Result.gif
??代碼中的配置參數就不多說了,有興趣可以到官網上去查看。
官網鏈接:
SpriteAtlasPackingSettings
SpriteAtlasTextureSettings
TextureImporterPlatformSettings