Unity3d에서 sprite 리스트를 자동 등록하는 Editor기능 만들기 (to generate sprite list automatically)

다음과 같은 스프라이트리스트를 가진 스크립트있다고 가정:

// Assets/Scripts/SpriteListScript.cs

public class SpriteListScript : MonoBehaviour {
    public Sprite[] spriteList;

    void Start() {
        // ...
    }
    
    // ...
}

Assets/Editor폴더안에 editor용 스크립트를 만든다:

// Assets/Editor/SpriteListScriptEditor.cs

[CustomEditor(typeof(SpriteListScript))]
public class SpriteListScriptEditor : Editor {
    public override void OnInspectorGUI() {
        DrawDefaultInspector();
        var ps = target as SpriteListScript;
        if (ps != null) {
            if(GUILayout.Button("Update Resources")) {
                UpdateSprites(ps);
            }
        }
    }

    void UpdateSprites(SpriteListScript ps) {
        var filepath = "Assets/Textures/sprites/numbers.png"; // path to texture containing sprites.
        var sprites = AssetDatabase.LoadAllAssetRepresentationsAtPath(filepath);

        if (sprites != null) {
            var l = new List<Sprite>(sprites.Length);
            foreach(var i in sprites) {
                var s = i as Sprite;
                l.Add(s);
            }

            l.Sort((x,y) => { return x.name.CompareTo(y.name); });
            ps.numberSprites = l.ToArray();
        } else {
            ps.numberSprites = new Sprite[0] {};
        }
    }
}
이 글은 unity3d 카테고리에 분류되었고 , , 태그가 있습니다. 고유주소 북마크.

댓글 남기기