Unity 2017でSpritepackerの仕組みが新しくなったみたいです。
新しいパッキングの仕組み、SpriteAtlas
Unity 2017でSpriteをパッキングする仕組みが新しくなりました。
機能はSprite Atlasという名前で、ファイルベースで参照アセットを準備し、運用するタイプになるみたいです。
パッキングの単位はフォルダ・テクスチャ・スプライト
以前のSpritePackerはテクスチャにPacking Tagを指定してパッキングする方法でした。
新しいパッキングのシステムでは、Object for packingの項目に登録したい項目を指定する事で、その項目をまとめてパッキングしてくれるみたいです。
パックできる単位は以下の項目。
- フォルダ
- テクスチャ(に含まれてるSprite)
- Sprite単体
例えば下のアニメーションでは、2Dフォルダを指定することで、2Dフォルダ以下の全てのスプライトがパッキングされます。
ちなみに、複数のSpriteAtlasから単一のSpriteを指定する事も出来ます。この場合、自動でSpriteをロードした場合、どのAtlasから参照されるのかは微妙です。
圧縮フォーマットはSpriteAtlasで一括指定
この機能では、圧縮する設定はAtlas単位で行います。
要するに、圧縮フォーマットが異なっていても再圧縮されます。
SpritePackerはLegacy扱い
Legacyの項目を設定すると旧SpritePackerが使用されます。
Legacyではない項目を使用すると、Packing Tagはガン無視されます。
パッキングしたAtlasの運用
以前はパッキングしても特に意識なく使用出来ましたが、SpriteAtlasは意識してコントロール出来るようになったみたいです。
Atlasはファイルとして見える
作成したAtlasはファイルとして確認出来ます。
このプレビューに見えている項目は1ページ目らしく、が必ずしも含まれる全てではない点に注意が必要かもしれません。
アセットなので、Resourcesに配置して動的にロードも出来ます。但しSpriteAtlas=テクスチャという訳ではないので、そこんとこ注意が必要です。
AssetBundle等にAtlasを含める場合、コチラのほうが運用が楽そうです。
AtlasからSprite名を指定して直接Spriteを取得出来る
アセットとしてSpriteAtlasが指定出来る事は、SpriteAtlasからアセットを取り出せる事も意味します。例えば下のように、GetSpriteを指定すると、Atlasに含まれるスプライトが取得出来ます。
namespaceはUnityEngine.U2D。何だこの「U」は…unity…?
Include in buildはAtlasを含めない設定
少し面白い挙動なのが、Include in buildです。
この項目のチェックを外すと、Atlasが参照しているSpriteが表示されなくなりました。
主に下の用途で使用されます。
感想
特に使い勝手が良さそうなのが、フォルダ・Sprite単位のAtlas化と、SpriteAtlasから直接Spriteを引っ張り出せる機能です。
それと、Spriteのテクスチャインポート設定を一括で設定出来るのは、悪くないような気がします。