ノートの端の書き残し

UnityやらC#やら。設計が得意かもしれない。

SpriteAtlasをコード上で編集する

Unity2017から導入されたSpriteAtlasという仕組み。
これは、複数の画像を一つの大きな画像にまとめて、描画命令を少なくしてパフォーマンスに貢献するための仕組みです。

詳しくはこれらを読むとわかりやすい。かも。

tsubakit1.hateblo.jp

kan-kikuchi.hatenablog.com

SpriteAtlasは、どれをパッキングするかをフォルダで指定すればそれだけであとはよしなにやってくれるとても便利な仕組みです。
ビルド時にはAtlasは完成しちゃっているので、ゲーム実行中にこのAtlasファイルをいじることは残念ながらできないのですが、エディタ上では可能です。
既存の画像をちょっといじって、いじってできた方の画像をパッキングする、みたいなことがコードでできるわけです。

こういうときに使えるのが、SpriteAtlasExtensionsというクラス

docs.unity3d.com

UnityEditor.U2D名前空間にあります。(U2Dって何なんでしょうね)
このクラスの持っている関数を使ってやると、パッキングの設定や、何をパッキングするのかなどをコード上で編集できるわけです。

この辺をいじると、普段意識することなく利用しているUnityEngine.Object型や、フォルダの扱いなどを改めて見直すことになってなかなか新鮮です。

なお、.spriteatlasファイルをテキストファイルとして開いてみると、中身のYAML自体はめちゃくちゃ単純なことがわかります。
fileIDやGUIDの意味や取得方法をしっかり理解していれば、SpriteAtlasExtensionsが無くても地道にテキストファイルを編集すればなんとかなりそうです。

GUIDについてはこちらの記事で説明しています。

nigiri.hatenablog.com