美文网首页unity3D技术分享
自动创建SpriteAtlas并设置图集资源

自动创建SpriteAtlas并设置图集资源

作者: 无糖Kel | 来源:发表于2019-03-21 21:51 被阅读1次

版权说明:本文为博主原创文章,转载需注明出处

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

相关文章

网友评论

    本文标题:自动创建SpriteAtlas并设置图集资源

    本文链接:https://www.haomeiwen.com/subject/pmdhvqtx.html