【Unity】RPGを作るチュートリアルその89 イベント向けのPrefabの構成

【Unity】RPGを作るチュートリアルその89 イベント向けのPrefabの構成

シンプルなRPGをUnityで作るチュートリアルシリーズの89回目です。

第88回ではイベントを処理するクラスを実装しました。

今回はイベント用のスクリプトをアタッチするため、既存のNPCのゲームオブジェクトについてテンプレート用Prefabを作成していきます。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。

 

チュートリアルの一覧

このシリーズ全体の一覧は以下のページにまとめています。

 

前回の内容

前回はイベントを処理するクラスを実装しました。

 

イベント用にPrefabを構成

イベントの機能をNPCと紐付けるにあたって、イベントを実行するために必要なゲームオブジェクトのまとまりをあらかじめ用意することで、設定時に戸惑わないようにしていきます。

今回作業したいPrefabは、

  • NPC
  • マップ

です。

NPCに関しては今のところPrefabにはしていませんが、イベント部分のPrefabを作ってそれをテンプレートにする形にしていきます。

マップについてはタイルマップをまとめるゲームオブジェクト、NPCをまとめるゲームオブジェクト、イベントをまとめるゲームオブジェクト、といった形でマップ内のゲームオブジェクトを整理しておきます。こうすることで、デバッグ中にもどれを変更すれば良いのか掴むための時間を減らせるかと思います。

 

NPCのイベント用Prefabを作成

作業をするNPCはどれでも良いのですが、心理的に色々いじっても抵抗感のないゴブリンくんで作業を行なっていきたいと思います。

えっ僕ですか
えっ僕ですか

 

イベント用のPrefabとしては、以前紹介した以下のイメージ図に沿って作成したいと思います。

イベント関連のクラスのイメージ図
イベント関連のクラスのイメージ図

 

 

ゲームオブジェクトの作成

Hierarchyウィンドウから「NPC_Goblin」のゲームオブジェクトを選択し、空のゲームオブジェクトを子オブジェクトとして作成します。名前は [EventFileData] にしました。このゲームオブジェクトがイベント用のPrefabの起点になるようにします。

イベントのファイル
イベントのファイル

 

次にイベントファイルに紐づくゲームオブジェクトを作成します。グラフィックの制御クラスをアタッチするゲームオブジェクトとして [EventGraphicController] を、イベントページをまとめるゲームオブジェクトとして [EventPages] をそれぞれ作成します。

イベントファイルに紐づくゲームオブジェクト
イベントファイルに紐づくゲームオブジェクト

 

グラフィックに関しては、ページと画像との対応を保持する [EventGraphicRecord] のゲームオブジェクトも1つ作成しておきます。グラフィックの変更が必要ない場合は「EventGraphicController」側でSpriteRendererやAnimatorの参照をアサインしなければOKです。

グラフィックの情報を保持するクラス
グラフィックの情報を保持するクラス

 

続いて「EventPages」の子オブジェクトとして [EventPage] を作成します。このゲームオブジェクトに各ページの情報を持たせます。

イベントページ
イベントページ

 

イベントページ内では、条件を取りまとめるゲームオブジェクトとして [Conditions] を、イベントプロセスを取りまとめるゲームオブジェクトとして [Processes] をそれぞれ作成します。また、「Conditions」の子オブジェクトとして条件用のゲームオブジェクトである [EventPageConditionFlag] も作成しておきます。

ページ内のゲームオブジェクト
ページ内のゲームオブジェクト

 

スクリプトのアタッチ

ゲームオブジェクトを作成したらスクリプトをアタッチしていきます。基本的にはゲームオブジェクトと同名のスクリプトをアタッチする形になります。

参照関係をスムーズにアサインするため、深い階層のゲームオブジェクトからスクリプトをアタッチしていきましょう。

「EventPageConditionFlag」のゲームオブジェクトを選択し、同名のスクリプトをアタッチします。フラグの名称はnullのままでOKです。

条件用のスクリプト
条件用のスクリプト

 

次に「EventPage」のゲームオブジェクトを選択し、こちらも同名のスクリプトをアタッチします。条件のリストや、開始プロセスの設定は実際に作っていく時に入れていきましょう。

イベントページのスクリプト
イベントページのスクリプト

 

続いてグラフィック関係のスクリプトをアタッチします。「EventGraphicRecord」のゲームオブジェクトを選択し、こちらも同名のスクリプトをアタッチします。参照関係は特に設定せず、実際に作るときにアサインします。

条件に応じたグラフィック
条件に応じたグラフィック

 

「EventGraphicController」のゲームオブジェクトでも同名のスクリプトをアタッチします。

グラフィックの制御
グラフィックの制御

 

最後に「EventFileData」のゲームオブジェクトでも同名のスクリプトをアタッチします。「EventGraphicController」への参照はPrefab化しても変わらないので、アサインしておきましょう。

イベントファイル
イベントファイル

 

Prefabを作成

スクリプトのアタッチが完了したら、Hierarchyウィンドウで「EventFileData」を選択し、Projectウィンドウの「Assets/Prefabs」のフォルダにドラッグ&ドロップしてPrefabを作成します。これでテンプレートとしてイベント関係のスクリプトがアタッチされたPrefabを使うことができるようになったので、イベントとして作成したいNPCやイベント用ゲームオブジェクトに組み込んでいきましょう。

Prefabの作成
Prefabの作成

 

マップのPrefabの構成を変更

また、各マップ用Prefabでもカテゴリごとに親オブジェクトを分けておきたいと思います。Projectウィンドウから「Assets/Prefabs/Map」のフォルダに移動し、マップ用のPrefabを選択して、Inspectorウィンドウ右上にある [Open] をクリックします。

Prefabの編集
Prefabの編集

 

Prefabの編集モードになったら、「Map_0001_Village」の直下に空のゲームオブジェクトを3つ作成します。名前はそれぞれ [Tilemaps][NPC][Events] にしました。もともと作成済みのタイルマップ3つについては、「Tilemaps」の子オブジェクトにします。

親オブジェクトの作成
親オブジェクトの作成

 

「Map_0000_TestMap」、「Map_0002_Field」、「Map_0003_Dungeon」のPrefabでも同様に親フォルダを作成します。

イベントを作り込んでいく際には、これらの親フォルダを使ってマップ内のゲームオブジェクトを整理しつつ進めていきたいと思います。

 

今回のブランチ

 

まとめ

今回はイベント用のスクリプトをアタッチするため、既存のNPCのゲームオブジェクトについてテンプレート用Prefabを作成しました。テンプレートがあれば毎回スクリプトのアタッチをする手間を減らせるので、多少楽できそうです。

次回はイベント機能の繋ぎ合わせと、メッセージ表示のイベントの作成を行います。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!