こんにちは、Unityエンジニアのオオバです。
2Dゲームを作るときに必須なのがSprite。Spriteとは画像のことでキャラクター、背景、エフェクトさまざまな場所で使用されます。
Spriteアニメーションといって複数のSpriteをコマ送りに表示させて表現する方法もお手軽にクオリティを上げられる手法です。
↑以前XでSpriteアニメーションの作り方をポストしたので確認してみてください。
話を戻して Spriteは1枚のテクスチャにつき1つしか設定できないと勘違い している人がいますが、実はSpriteは1枚の画像に対して何個も設定可能です。
そこで本記事では1枚のテクスチャに対して複数のSpriteを設定する方法を紹介していきます。

【Unity】SpriteをパックするSpriteAtlasの使い方
SpriteAtlasはUI開発や2Dゲームに必須テクニックです。まだ使ったことがない方はぜひ本記事を読んでみてください。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
1枚のテクスチャに複数のSpriteを保持する2つの手順
1.テクスチャをSprite化
まずはテクスチャをSpriteに変換していきます。ちなみにSpriteとは 2D上で扱う画像(テクスチャ)のこと 。今回は1枚のテクスチャから複数のSpriteを設定するため「Multiple」を選択します。
まずはSpriteとして扱うパーツを1枚絵にしたテクスチャを用意します。
このテクスチャを選択してInspectorウィンドウから以下の項目を設定します。
Texture Type
を Sprite に設定Sprite Mode
を Multiple に設定
Open Sprite Editor をクリックしてください。
2.Sprite Editorで編集
するとSprite Editorウィンドウが開きます。Sprite Editorウィンドウでは各Spriteを編集することが可能です。
顔や髪、体、手足のパーツの範囲やピボット(基準点)を決めて名前を設定していきます。
すると↑上図のように1枚のテクスチャに複数のSpriteがぶら下がるアセットが出来上がりました。
ためしにSpriteをヒエラルキーにドラッグアンドドロップすればSprite Rendererにセットされたオブジェクトとして画面に表示されます。
以上で1枚のテクスチャから複数のSpriteを作成できました。
アニメーションを実装すると上記のようにアニメーションするようになります。
Spriteをすべて取得する方法
本章では1枚のテクスチャに含まれるすべてのSpriteを取得する方法を紹介します。ランタイム中ではなくEditモード中のテクニックです。
具体的にはAssetDatabaseを使って取得します。次のコードを見てみてください。
// 対象アトラス
SpriteAtlas atlas;
// 対象のパスを取得
var atlasPath = AssetDatabase.GetAssetPath(atlas);
// 対象のオブジェクトをすべて取得する
var objects = AssetDatabase.LoadAllAssetsAtPath(atlasPath);
// Sprite型にキャストして一致した配列を返す
var sprites = objects.OfType().ToArray();
対象のSpriteAtlasのパスから LoadAllAssetsAtPath
関数とOfTypeを使ってすべてのSpriteを取得しています。
必要になった際に参考にしてみてください。
まとめ
本記事では1枚のテクスチャから複数のSpriteを設定する方法を解説しました。
通常、Spriteは1画像につき1つだけと思われがちですが、Sprite Modeを「Multiple」に設定し、Sprite Editorを使うことで複数のSpriteを作成可能 です。
手順としては、まずテクスチャをSprite化し、Sprite Editorでパーツごとに分割。
これによりキャラクターのパーツを分けてアニメーションさせることもできます。最後に分割したSpriteを使ってSpriteアニメーションを作成することで、よりリッチな2D表現が可能になります。
2Dゲーム開発を効率よく進めたい方は、ぜひこの方法を試してみてください。

筆者のXをフォローしよう
- Unity6000.0.32f1