概要
2Dゲームの世界は、Sprite(スプライト) と呼ばれる画像アセットによって構築されます。キャラクター、背景、アイテム、UI要素など、画面に表示されるほとんどすべてのグラフィックがSpriteです。Unityでは、これらの2D画像を効率的に管理し、表示するための強力なツールが提供されています。
特に、キャラクターのアニメーションのように連続した複数の画像を扱う場合、それらを個別のファイルとして管理するのは非効率です。そこで使われるのが、複数の画像を一枚の大きなテクスチャにまとめたスプライトシート (Sprite Sheet) またはテクスチャアトラス (Texture Atlas) と呼ばれるテクニックです。これにより、描画負荷の軽減(ドローコールの削減)と、アセット管理の簡素化という大きなメリットが得られます。
この記事では、UnityにおけるSpriteの基本的な扱い方と、スプライトシートをSprite Editorを使って分割し、アニメーションなどに利用する方法を詳しく解説します。
上の画像は、スライムキャラクターのアニメーション用スプライトシートの例です。このように、動きの各コマを一枚の画像にまとめて配置します。
Spriteとは?
UnityプロジェクトにPNGやJPEGなどの画像ファイルをインポートすると、デフォルトではTexture TypeがDefault(つまり3D用のテクスチャ)として扱われます。これを2DのSpriteとして使用するには、Inspectorで設定を変更する必要があります。
- プロジェクトウィンドウで画像アセットを選択します。
- Inspectorの上部にある
Texture TypeのドロップダウンをSprite (2D and UI)に変更します。 Applyボタンを押して変更を適用します。
これで、この画像アセットはシー ンにドラッグ&ドロップして表示できるSpriteとして扱われるようになります。シーンに配置されたSpriteは、Sprite Rendererというコンポーネントによって描画されます。
スプライトシートとSprite Editor
スプライトシートは、歩き、走り、ジャンプといったキャラクターの一連の動きをコマ撮りのように並べた一枚の画像です。Unityでこのスプライトシートを利用するには、Sprite Editorを使って個々の画像(コマ)に分割する作業が必要です。
Sprite Editorを使った分割方法
-
Sprite Modeの変更: スプライトシートとして使いたい画像アセットを選択し、Inspectorで
Sprite ModeをSingleからMultipleに変更します。 -
Sprite Editorを開く:
Sprite Editorボタンをクリックして、Sprite Editorウィンドウを開きます。 -
自動分割 (Automatic Slicing):
- Sprite Editorの左上にある
Sliceメニューをクリックします。 TypeがAutomaticになっていることを確認し、Sliceボタンを押します。- Unityは画像の透明部分などを解析し、自動的に個々のスプライトを検出して矩形で囲ってくれます。
- Sprite Editorの左上にある
-
グリッド分割 (Grid by Cell Size):
- スプライトが等間隔のグリッドにきれいに並んでいる場合は、より正確なグリッド分割が便利です。
SliceメニューでTypeをGrid by Cell Sizeに変更します。Pixel Sizeに、一つのスプライトの幅と高さ(ピクセル単位)を入力し、Sliceボタンを押します。
-
手動での調整: 分割がうまくいかない場合は、マウスでドラッグして矩形を直接作成・編集することもできます。各スプライトの名前やピボット(中心点)を個別に設定することも可能です。
-
適用: 分割が完了したら、Sprite Editorの右上にある
Applyボタンを押して変更を保存します。これを忘れると分割情報が保存されないので注意してください。
Applyを押すと、プロジェクトウィンドウでスプライトシートアセットの横にある矢印をクリックすることで、分割された個々のスプライトが子アセットとして表示されるようになります。これらの個別のスプライトを、アニメーションクリップの作成や、Sprite Rendererへの設定に使用することができます。
なぜスプライトシートを使うのか?
- パフォーマンス向上: 複数の
Spriteが同じテクスチャ(スプライトシート)を共有していると、Unityはそれらをまとめて1回の描画命令(ドローコール)で処理しようとします(スタティックバッチングやダイナミックバッチング)。これにより、CPUの負荷が大幅に軽減され、ゲーム全体のパフォーマンスが向上します。 - 管理の容易さ: 関連する画像を一つのファイルにまとめることで、プロジェクトのアセット管理がシンプルになります。ファイル数が減ることで、プロジェクトのロード時間短縮に も繋がります。
- メモリ効率: 個別の画像ファイルを多数読み込むよりも、一枚の大きな画像を読み込む方がメモリの断片化が少なく、効率的です。
まとめ
Spriteとスプライトシートは、Unityにおける2Dゲーム開発の根幹をなす要素です。
- 2Dで使う画像は
Texture TypeをSprite (2D and UI)に設定する。 - 複数の連続した画像は、パフォーマンスと管理のためにスプライトシートにまとめるのが基本。
- スプライトシートは
Sprite ModeをMultipleにし、Sprite Editorで個々のSpriteに分割する。 - 分割方法には
AutomaticとGrid by Cell Sizeがあり、状況に応じて使い分ける。
Sprite Editorを使いこなしてスプライトシートを効率的に管理するスキルは、クオリティの高い2Dゲームを制作するための第一歩です。