可以在 Unity 中导出切片精灵(PNG 图像)吗?

Ale*_*ika 2 png sprite slice unity-game-engine

所以我有一个统一的 Sprite 2d 和 UI。(Png 图像)其中包含许多小图像,例如按钮。所以我把它们切片,然后可以单独使用它们。但问题是我想导出我在切片时获得的每个 png 图像以供其他用途。那么我可以这样做吗?并将它们作为单独的png?

这是包含多个图像的图像

我想要的是这些图像:

当我把它们切片后

将它们作为单独的 png 导出到我的(比如说)桌面中。

谢谢你!

Sam*_*-IH 10

我也有这个需要,我最终用一个简单的编辑器脚本解决了它:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ExportSubSprites : Editor {

    [MenuItem("Assets/Export Sub-Sprites")]
    public static void DoExportSubSprites() {
        var folder = EditorUtility.OpenFolderPanel("Export subsprites into what folder?", "", "");
        foreach (var obj in Selection.objects) {
            var sprite = obj as Sprite;
            if (sprite == null) continue;
            var extracted = ExtractAndName(sprite);
            SaveSubSprite(extracted, folder);
        }

    }

    [MenuItem("Assets/Export Sub-Sprites", true)]
    private static bool CanExportSubSprites()
    {
        return Selection.activeObject is Sprite;
    }

    // Since a sprite may exist anywhere on a tex2d, this will crop out the sprite's claimed region and return a new, cropped, tex2d.
    private static Texture2D ExtractAndName(Sprite sprite) {
        var output = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);
        var r = sprite.textureRect;
        var pixels = sprite.texture.GetPixels((int)r.x, (int)r.y, (int)r.width, (int)r.height);
        output.SetPixels(pixels);
        output.Apply();
        output.name = sprite.texture.name + " " + sprite.name;
        return output;
    }

    private static void SaveSubSprite(Texture2D tex, string saveToDirectory) {
        if (!System.IO.Directory.Exists(saveToDirectory)) System.IO.Directory.CreateDirectory(saveToDirectory);
        System.IO.File.WriteAllBytes(System.IO.Path.Combine(saveToDirectory, tex.name + ".png"), tex.EncodeToPNG());
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,将其放入名为 的脚本文件中EditorSubSprites.cs,并确保它位于编辑器文件夹中。如果您没有编辑器文件夹,您可以简单地创建/Assets/Editor/

使用时,请展开纹理资源的精灵,然后选择要导出的任意数量的精灵。右键单击并选择“导出子精灵”。

  • 精灵还需要以特定方式配置才能使其工作,因此请检查您的主精灵表:“网格类型 = 全矩形”和“高级>读/写启用 = true”。 (2认同)