UnityのSpriteAtlasについて前から疑問だったのが、直接インスペクターでspriteをアタッチしても、
ちゃんとパッキングされたSpriteが使われているのか?ということである。
なぜそういう疑問を持つかというと、
インスペクタでアタッチした場合、SpriteAtlasでパッキングされているかどうか?どのアトラスに入っているか?
など、アトラス自体を意識しないで設定できるからだ。
【この記事を書いたときの環境】
・ Unity 2019.4.31f1 Personal (Windows64bit)
結論
先に結論を書くと、
直接InspecterアタッチしてもSpriteAtlasがちゃんと使われてました!^^
検証
こちらの記事↓で、SpriteAtlasにまとめると、SetPass(描画回数)が減る、という話がある。
ちゃんとSpriteAtlasが使われているかはSetPassを見ればわかりそうだ。
パック前
まずはパッキング前に、直接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 になりました!