유니티/유니티 기능

이미지 스프라이트 분리 방법

DOlpa_GB 2025. 3. 24. 21:08

 

이런 사진이 한장 있다고 치자. 52장의 카드들이 한장의 이미지안에 들어있다

 

 

Sprite Editor로 일정하게 잘라내기까지는 끝냈는데..

 

 

문제는 이 잘린 스프라이트들을 어떻게 하면 각각 하나의 이미지로 구별할 수 있을까?

하나씩 드래그하여 프리팹으로 만들수도 없는 노릇이고..막막할 수 있지만 이럴땐 좋은 방법이 있다

 

그대로 따라하기만 하면 손쉽게 자른 이미지들을 하나씩 보관할 수 있다

 

 

1. 우선 에셋에 Editor라는 이름으로 폴더를 하나 만든다

 

 

2. 아래 코드를 그대로 복사하여 스크립트를 하나 만든뒤 Editor 폴더 안에 넣어준다

 

using UnityEngine;
using UnityEditor;
using System.IO;

public class SpriteExporter : MonoBehaviour
{
    [MenuItem("Tools/Export Sprites")]
    static void ExportSprites()
    {
        string path = "Assets/ExportedSprites"; // 저장될 폴더 경로
        if (!Directory.Exists(path))
            Directory.CreateDirectory(path);

        Object[] sprites = Selection.objects; // 선택한 이미지

        foreach (Object obj in sprites)
        {
            Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(AssetDatabase.GetAssetPath(obj));
            string texturePath = AssetDatabase.GetAssetPath(texture);
            Object[] data = AssetDatabase.LoadAllAssetsAtPath(texturePath);

            foreach (Object asset in data)
            {
                if (asset is Sprite sprite)
                {
                    SaveSpriteToFile(sprite, path);
                }
            }
        }

        AssetDatabase.Refresh();
        Debug.Log("Sprites Exported Successfully!");
    }

    static void SaveSpriteToFile(Sprite sprite, string path)
    {
        Texture2D spriteTexture = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);
        Color[] pixels = sprite.texture.GetPixels(
            (int)sprite.rect.x, (int)sprite.rect.y,
            (int)sprite.rect.width, (int)sprite.rect.height
        );
        spriteTexture.SetPixels(pixels);
        spriteTexture.Apply();

        byte[] bytes = spriteTexture.EncodeToPNG();
        File.WriteAllBytes($"{path}/{sprite.name}.png", bytes);
    }
}

 

 

3. 원본 이미지를 선택한뒤 상단에 보이는 Tool > Export Sprite를 클릭해주면 자동으로 폴더를 생성하여 

그 안에 개별적으로 이미지를 넣어준다

 

 

 

 

 

이렇게 하면 쉽게 이미지를 하나씩 구별해서 보관할 수 있다.

그리고 만약 Export Sprite를 클릭해줬는데 오류가 난다!

 

원본 이미지를 선택한 뒤 Inspector 창에서 Read/Write를 체크 활성화 해준뒤 Apply를 눌러주면 된다

반응형