【Unity】【エディタ拡張】SpritePackerの全アトラスをスクリプトから取得する

Unityのエディタ拡張でSpritePackerの全アトラスをスクリプトから取得する方法です。

Unity2018.4.6

はじめに

旧Sprite Packerで作られたアトラスはWindow > 2D > Sprite Packerから見れるのですが、
結構使い勝手が悪くアトラスの数が増えると使えたものではありません。

f:id:halya_11:20190726130131p:plain

そこでこの記事ではSprite Packerによるアトラスの情報をスクリプトから取得してみます。

なお新しいSprite Atlasには対応していません。

ソースコード

ソースコードは以下の通りです。

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

public class Example
{
    public static Dictionary<string, Texture[]> GetAtlasTextures(BuildTarget buildTarget)
    {
        var result = new Dictionary<string, Texture[]>();

        // アトラスをリビルド
        Packer.RebuildAtlasCacheIfNeeded(buildTarget);

        // リビルド後にPacker.atlasNamesにアトラス名一覧が入ってくる
        foreach (var atlasName in Packer.atlasNames) {
            // Packer.GetTexturesForAtlas()でアトラス用のテクスチャ一覧を取得
            result.Add(atlasName, Packer.GetTexturesForAtlas(atlasName));
        }

        return result;
    }
}

説明はコメントに書いた通りです。