読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Unity 2017の新しいスプライトをパッキングする仕組み、”SpriteAtlas”について

f:id:tsubaki_t1:20170504233638j:plain

Unity 2017でSpritepackerの仕組みが新しくなったみたいです。

新しいパッキングの仕組み、SpriteAtlas

Unity 2017でSpriteをパッキングする仕組みが新しくなりました。

機能はSprite Atlasという名前で、ファイルベースで参照アセットを準備し、運用するタイプになるみたいです。

f:id:tsubaki_t1:20170505002218j:plain

パッキングの単位はフォルダ・テクスチャ・スプライト

以前のSpritePackerはテクスチャにPacking Tagを指定してパッキングする方法でした。

新しいパッキングのシステムでは、Object for packingの項目に登録したい項目を指定する事で、その項目をまとめてパッキングしてくれるみたいです。

パックできる単位は以下の項目。

  • フォルダ
  • テクスチャ(に含まれてるSprite)
  • Sprite単体

例えば下のアニメーションでは、2Dフォルダを指定することで、2Dフォルダ以下の全てのスプライトがパッキングされます。

f:id:tsubaki_t1:20170504233739g:plain

ちなみに、複数のSpriteAtlasから単一のSpriteを指定する事も出来ます。この場合、自動でSpriteをロードした場合、どのAtlasから参照されるのかは微妙です。

圧縮フォーマットはSpriteAtlasで一括指定

この機能では、圧縮する設定はAtlas単位で行います。
要するに、圧縮フォーマットが異なっていても再圧縮されます。

f:id:tsubaki_t1:20170504234257j:plain

SpritePackerはLegacy扱い

Legacyの項目を設定すると旧SpritePackerが使用されます。

Legacyではない項目を使用すると、Packing Tagはガン無視されます。

f:id:tsubaki_t1:20170505001109j:plain

パッキングしたAtlasの運用

以前はパッキングしても特に意識なく使用出来ましたが、SpriteAtlasは意識してコントロール出来るようになったみたいです。

Atlasはファイルとして見える

作成したAtlasはファイルとして確認出来ます。

このプレビューに見えている項目は1ページ目らしく、が必ずしも含まれる全てではない点に注意が必要かもしれません。

f:id:tsubaki_t1:20170504234703j:plain

アセットなので、Resourcesに配置して動的にロードも出来ます。但しSpriteAtlas=テクスチャという訳ではないので、そこんとこ注意が必要です。

AssetBundle等にAtlasを含める場合、コチラのほうが運用が楽そうです。

AtlasからSprite名を指定して直接Spriteを取得出来る

アセットとしてSpriteAtlasが指定出来る事は、SpriteAtlasからアセットを取り出せる事も意味します。例えば下のように、GetSpriteを指定すると、Atlasに含まれるスプライトが取得出来ます。

namespaceはUnityEngine.U2D。何だこの「U」は…unity…?

f:id:tsubaki_t1:20170504235042j:plain

Include in buildはAtlasを含めない設定

少し面白い挙動なのが、Include in buildです。

この項目のチェックを外すと、Atlasが参照しているSpriteが表示されなくなりました。

f:id:tsubaki_t1:20170505000730j:plain

これは「どのSpriteAtlasからも参照されない」場合で、どれか一つでも参照されていれば表示されるみたいです。Compress設定やプラットフォームで使わないスプライトがある場合等に便利かもしれません。

 

個人的には、SpriteAtlasから参照されないなら通常のSpriteから参照されるかなと思いましたが、そんなことは無かったという感じで(ベータなので変わるかもしれませんが)

感想

特に使い勝手が良さそうなのが、フォルダ・Sprite単位のAtlas化と、SpriteAtlasから直接Spriteを引っ張り出せる機能です。

それと、Spriteのテクスチャインポート設定を一括で設定出来るのは、悪くないような気がします。

関連

tsubakit1.hateblo.jp