「さぁ、UnityのTilemapを始めよう!」 シリーズ、全8回の内の5回目です。
今回は「Tilemap関連のコンポーネント編」と題して、Tilemapに関連するコンポーネント、そしてゲームオブジェクトについて説明します。
前回は、「第4回 Tile について編」です。
Tilemap関連のコンポーネントの概要
まずは、Tilemap関連のゲームオブジェクトとコンポーネントを整理します。この記事では、Collider関連のコンポーネントには触れません。Colliderに関しては、後の「第7回 TilemapとCollider編」を参照してください。
シーン上にTilemap関連のゲームオブジェクト作成するためには、HierarchyウィンドウのCreateタブから、「2D Object > Tilemap」を選択します。そうすると、図のようにGridゲームオブジェクトとTilemapゲームオブジェクトという2つのゲームオブジェクトが生成されます。
Gridゲームオブジェクトには、次のようにGridコンポーネントが付与されています。
Tilemapゲームオブジェクトには、次のようにTilemapコンポーネントとTilemapRendererコンポーネントが付与されています。
Gridゲームオブジェクトは、子ゲームオブジェクトとして複数のTilemapゲームオブジェクトをもつことができます。こうすることで、レイヤーごとに別のTilemapにマップを作成するというテクニックを使うことができます。
またお勧めはしませんが、次の画像のようにひとつのゲームオブジェクトにGridコンポーネント、Tilemapコンポーネント、TilemapRendererコンポーネントを付与してTilemapとして有効なゲームオブジェクトを作成することもできます。
Gridコンポーネント
この節ではGridコンポーネントについて説明します。
Gridコンポーネントは、「UnityEngine.Grid」というクラスで、親クラスは「UnityEngine.GridLayout」です。Tilemapの拡張要素であるBrushというクラスでは、「Grid」ではなく、「GridLayout」が使われています。
Gridコンポーネントは次のような設定項目を持ちます。これらの設定項目は、Gridゲームオブジェクトのすべての子Tilemapゲームオブジェクトに対して適応されます。
- Cell Size : セルの大きさ
- Cell Gap : セルとセルの隙間の大きさ
- Cell Swizzle : Tilemapの平面
Tilemapはデフォルト設定だとXY平面に対して作成されます。「Cell Swizzle」を変更することで、XZ平面に対しても作成することができるようになります。
TilemapRendererコンポーネント
この節ではTilemapRendererコンポーネントについて説明します。
TilemapRendererコンポーネントは、「UnityEngine.Tiilemaps.TilemapRenderer」というクラスで、親クラスは「UnityEngine.Renderer」です。
TilemapRendererコンポーネントは次のような設定項目を持ちます。
- Sorting Layer
- Order In Layer
- Mask Interaction
このようにSpriteRendererコンポーネントと共通の設定項目を持ち、描画設定を司るコンポーネントです。これらの項目を設定することで、各TilemapそしてSpriteRenderer間の描画順序を制御することが可能です。
Tilemapコンポーネント
この節ではTilemapコンポーネントについて説明します。
Tilemapコンポーネントは、「UnityEngine.Tilemaps.Tilemap」というクラスで、親クラスは「UnityEngine.GridLayout」です。Tilemapコンポーネントは、どこの座標にどのTileアセットを保持しているのかという情報を保持する、キーとなるコンポーネントです。また色やアンカーなどの描画・配置に関する設定項目も持っています。
このクラスには、実行時にTileを追加・削除・更新するためのメソッドが数多く存在します。単純な背景や固定のプラットフォームとして使うのではなく、マップにギミックを持たせる場合、このクラスを参照し操作してください。
次回とシリーズ一覧
次回は、「第6回 Tileの描画編」です。