【Unity】SpritePackerで自動パッキング

uGUIのSpritePackerについて調べたので自分用に纏めメモ

SpritePackerとは

公式リファレンス
SpritePackerはドローコールを減らすことができるため。パフォーマンス最適化に効果がある。

SpritePackerを使うには

1 : SpritePackerの有効化

デフォルトで無効化されているため、ProjectSettingsから有効する。
Edit -> Project Settings -> Editor
Enabled for Builds、またはAlways Enabledに変更する。

2 : 自動パッキングスクリプトを用意

Asset/Editorディレクトリが無ければ作る。

こちらのスクリプトをEditor直下に配置。
http://kan-kikuchi.hatenablog.com/entry/SpritePostprocessor

3 : テクスチャ配置用のディレクトリを用意

Asset/Spritesディレクトリが無ければ作る。
以降、このSpritesディレクトリよりも下にあるテクスチャはSpritePackerでパッキングするための設定が自動で行われる。
また、子ディレクトリがある場合はその子ディレクトリの名称でパッキングタグが付く。

4 : テクスチャを確認する

SpritePackerWindowを開く。
Window -> Sprite Packer
左上のPackを押すとパッキングされたアトラスを確認できる。

トラブルシュート

テクスチャがアトラスに含まれていない

Resources以下のファイルはアンロードされているので、ファイルはResources外に配置しなければいけない。

パッキングされたアトラスからテクスチャをアタッチしたい

UIのImageでテクスチャをアタッチするだけ。
パッキング前後で何かすることはない。

パッキングされたテクスチャがアタッチされたPrefabはどうなるのか

Resourcesディレクトリ下に配置すると、SpritePackerの恩恵を受けた状態で参照される。
Prefabに限らず、AnimatorやScriptableObject等でもOKらしい。

参考

https://docs.unity3d.com/ja/current/Manual/SpritePacker.html
http://kan-kikuchi.hatenablog.com/entry/SpritePostprocessor
http://tsubakit1.hateblo.jp/entry/2016/03/10/234553