UnityEditor动态生成图集SpriteAtlas,并包含文件夹图片

UnityEditor动态生成图集SpriteAtlas,并包含文件夹图片

//首先读取json 
[MenuItem("工具/创建Atlas")]
static void AtlasCreate()
{
        string rpath = "Assets/AssetAll/ps";
        DirectoryInfo direction = new DirectoryInfo(rpath);
        DirectoryInfo[] directs = direction.GetDirectories();//文件夹
        DirectoryInfo dir;
        int i, j;
        for (i = 0; i < directs.Length; i++)
        {
            dir = directs[i];
            string dataPath = dir.FullName;////= System.IO.Path.GetFullPath(".");

            //创建图集
            string atlas = dataPath + "\\" + dir.Name + ".spriteatlas";
            if (File.Exists(atlas))
            {
                Debug.Log("图集找到" + atlas);
            }
            else
            {
                SpriteAtlas sa = new SpriteAtlas();
                
                SpriteAtlasPackingSettings packSet = new SpriteAtlasPackingSettings()
                {
                    blockOffset = 1,
                    enableRotation = false,
                    enableTightPacking = false,
                    padding = 4,
                };
                sa.SetPackingSettings(packSet);

                
                SpriteAtlasTextureSettings textureSet = new SpriteAtlasTextureSettings()
                {
                    readable = true,
                    generateMipMaps = false,
                    sRGB = true,
                    filterMode = FilterMode.Bilinear,
                };
                sa.SetTextureSettings(textureSet);
                
                atlas = rpath + "/" + dir.Name + "/" + dir.Name + ".spriteatlas";
                AssetDatabase.CreateAsset(sa, atlas);
                //图片的文件夹加入图集。
                Object texture = AssetDatabase.LoadMainAssetAtPath(rpath + "/" + dir.Name);
                SpriteAtlasExtensions.Add(sa, new Object[] { texture });
                
                AssetDatabase.SaveAssets();
                Debug.Log("图集创建:" + atlas);
				//设置预设名称
                AssetImporter atlasAssetImporter = AssetImporter.GetAtPath(atlas);  //得到Asset
                atlasAssetImporter.assetBundleName = dir.Name;
                atlasAssetImporter.assetBundleVariant = "ps";
            }
        }
}
### Unity 中 Sprite Atlas 的使用教程 #### 1. 创建 Sprite Atlas 在 Unity 编辑器中,可以通过菜单栏 `Assets --> Create --> Sprite Atlas` 来创建一个新的 Sprite Atlas 对象[^2]。这将在项目资源文件夹中生成一个 `.asset` 文件。 #### 2. 添加 Sprites 到 Atlas 选中刚创建的 Sprite Atlas,在 Inspector 面板中可以看到一个加号按钮 (`+`)。点击该按钮可以将所需的 Sprites 或 Textures 添加到当前的 Sprite Atlas 中[^4]。需要注意的是,既可以添加单个 Sprite,也可以通过 Texture 下的所有子 Sprite 进行批量添加。 #### 3. 设置 Sprite Packer Mode 为了确保 Sprite Atlas 能够正常工作优化性能,需要调整其打包模式。进入编辑器窗口顶部菜单 `Edit --> Project Settings --> Editor`,找到 `Sprite Packer` 部分,将其模式设置为 `Enabled (Always)` 或其他适合项目的选项[^3]。这样可以在构建时自动处理纹理图集的压缩和合操作。 #### 4. 打包与应用配置 完成上述步骤之后,还需要确认几个额外参数以便成功编译出最终版本: - **Packing Tags**: 可以为不同类型的图片分配标签分类管理; - **Padding & Resolution**: 控制每张图像之间的间距以及整个图集中最大分辨率大小限制等属性值设定合理范围即可满足大多数需求场景; 当一切准备就绪后运行程序或者导出正式版前记得再次检查这些细节部分是否正确无误! #### 5. 在脚本里访问 Sprite 编写 C# 脚本来动态加载指定名称的精灵对象实例化显示出来: ```csharp using UnityEngine; public class SpriteAtlasExample : MonoBehaviour { public SpriteAtlas spriteAtlas; void Start() { Sprite sprite = spriteAtlas.GetSprite("YourSpriteName"); if (sprite != null) { // Assign the retrieved sprite to a SpriteRenderer component. GetComponent<SpriteRenderer>().sprite = sprite; } else { Debug.LogError("Sprite not found in atlas."); } } } ``` 此代码片段展示了如何利用已定义好的 `SpriteAtlas` 实例方法 `GetSprite(string name)` 获取特定名字对应的 Sprite 赋给某个物体上的渲染组件[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值