自動創建SpriteAtlas并設置圖集資源


版權說明:本文為博主原創文章,轉載需注明出處

環境 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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容