渋谷ほととぎす通信

エンジニア社長によるUnityとAIのブログ & エンジニアの生存戦略

【Unity】1枚のテクスチャに複数のSpriteを保持する方法

【Unity】1枚のテクスチャに複数のSpriteを保持する方法

こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • Spriteって1画像に1つだけ?
  • 1画像内から複数のSpriteを設定できる?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    2Dゲームを作るときに必須なのがSprite。Spriteとは画像のことでキャラクター、背景、エフェクトさまざまな場所で使用されます。

    Spriteアニメーションといって複数のSpriteをコマ送りに表示させて表現する方法もお手軽にクオリティを上げられる手法です。

    ↑以前XでSpriteアニメーションの作り方をポストしたので確認してみてください。

    話を戻して Spriteは1枚のテクスチャにつき1つしか設定できないと勘違い している人がいますが、実はSpriteは1枚の画像に対して何個も設定可能です。

    そこで本記事では1枚のテクスチャに対して複数のSpriteを設定する方法を紹介していきます。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    1枚のテクスチャに複数のSpriteを保持する2つの手順

    1.テクスチャをSprite化

    まずはテクスチャをSpriteに変換していきます。ちなみにSpriteとは 2D上で扱う画像(テクスチャ)のこと 。今回は1枚のテクスチャから複数のSpriteを設定するため「Multiple」を選択します。

    【Unity】1枚のテクスチャに複数のSpriteを保持する方法_0
    まずはSpriteとして扱うパーツを1枚絵にしたテクスチャを用意します。

    【Unity】1枚のテクスチャに複数のSpriteを保持する方法_1
    このテクスチャを選択してInspectorウィンドウから以下の項目を設定します。

    • Texture TypeSprite に設定
    • Sprite ModeMultiple に設定

    Open Sprite Editor をクリックしてください。

    2.Sprite Editorで編集

    【Unity】1枚のテクスチャに複数のSpriteを保持する方法_2

    するとSprite Editorウィンドウが開きます。Sprite Editorウィンドウでは各Spriteを編集することが可能です。

    顔や髪、体、手足のパーツの範囲やピボット(基準点)を決めて名前を設定していきます。

    【Unity】1枚のテクスチャに複数のSpriteを保持する方法_3

    すると↑上図のように1枚のテクスチャに複数のSpriteがぶら下がるアセットが出来上がりました。

    ためしにSpriteをヒエラルキーにドラッグアンドドロップすればSprite Rendererにセットされたオブジェクトとして画面に表示されます。

    以上で1枚のテクスチャから複数のSpriteを作成できました。

    【Unity】1枚のテクスチャに複数のSpriteを保持する方法_4

    アニメーションを実装すると上記のようにアニメーションするようになります。

    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ゲーム開発を効率よく進めたい方は、ぜひこの方法を試してみてください。

    オススメ記事
    検証環境
    • Unity6000.0.32f1