美文网首页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