【Unity】【疑問】SpriteAtlasに入れたSpriteをコードからでなく直接InspecterアタッチしてもSpriteAtlasがちゃんと使われているのか?

UnityのSpriteAtlasについて前から疑問だったのが、直接インスペクターでspriteをアタッチしても、
ちゃんとパッキングされたSpriteが使われているのか?ということである。

なぜそういう疑問を持つかというと、
インスペクタでアタッチした場合、SpriteAtlasでパッキングされているかどうか?どのアトラスに入っているか?
など、アトラス自体を意識しないで設定できるからだ。



【この記事を書いたときの環境】
・ Unity 2019.4.31f1 Personal (Windows64bit)

結論

先に結論を書くと、
直接InspecterアタッチしてもSpriteAtlasがちゃんと使われてました!^^

検証

こちらの記事↓で、SpriteAtlasにまとめると、SetPass(描画回数)が減る、という話がある。
ちゃんとSpriteAtlasが使われているかはSetPassを見ればわかりそうだ。

kan-kikuchi.hatenablog.com

パック前

まずはパッキング前に、直接SpriteRenderer に設定してみる

SetPass は 5 でした。

パック後・Inspecter

続いてパッキングしてみる。

再生後、SetPass が 3 になりました。

パック後・コードでspriteを指定

このようなアトラスからspriteを設定するコードをつくり、

using UnityEngine;
using UnityEngine.U2D;

public class SpriteSetter : MonoBehaviour
{
    public SpriteAtlas spriteAtlas;

    void Start()
    {
        GetComponent<SpriteRenderer>().sprite = spriteAtlas.GetSprite("grass1");
    }
}

アトラスだけアタッチしてsprirteをコードで設定します。

再生後、Inspectorから設定した時と同じ、SetPass が 3 になりました