【Unity】RPGを作るチュートリアルその85 イベントページの条件を設定するクラスの実装

【Unity】RPGを作るチュートリアルその85 イベントページの条件を設定するクラスの実装

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

第84回ではイベントに関連するクラス同士の関係を考えつつ、定義値用のEnumを実装しました。

今回は実行するイベントのページの条件を設定するクラスについて実装していきます。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

チュートリアルの一覧

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

 

前回の内容

前回はイベントに関連するクラス同士の関係を考えつつ、定義値用のEnumを実装しました。

 

イベントの実行条件

イベントを実行する際は、ページごとに条件を設定できるようにして、条件に合致するページを実行する形にしたいと思います。条件の判定については、フラグやアイテム、所持金などの値や、レベルの値などを使って判定するケースが考えられます。

このチュートリアルで実装する範囲ではフラグによる判定があれば良さそうなので、こちらを実装していきます。チュートリアル後に拡張できるように、条件を判定するクラスのベースクラスを用意して、それを派生させる形で実装できるようにしていきます。

イベントに関するスクリプトファイルを配置するため、Projectウィンドウから「Assets/Scripts」のフォルダを開き、新しくフォルダを作成します。名前は [Event] にしました。

フォルダの作成
フォルダの作成

 

作成した「Event」フォルダに移動し、スクリプトファイルを作成します。名前は [EventPageConditionBase] にしました。

条件のベースクラスを作成
条件のベースクラスを作成

 

作成した「EventPageConditionBase」の中身は以下のように記載しました。

ベースクラスにCheckCondition()のメソッドを用意して、これを継承した先でoverrideして処理を入れていくことにしましょう。例えばフラグに関する確認なら、FlagManagerを使ってフラグの状態を確認して結果を返すようにしたり、アイテムなら特定のアイテムの所持数を確認して結果を返すようにしたりと、固有の処理を行えるようにしています。

 

フラグの確認用クラスの作成

続いてイベントの条件としてフラグの状態を確認するクラスを作成していきます。Projectウィンドウにて同じく「Event」フォルダ内で新しくスクリプトファイルを作成します。名前は [EventPageConditionFlag] にしました。

フラグに関する条件を確認するクラス
フラグに関する条件を確認するクラス

 

作成した「EventPageConditionFlag」の中身は以下のように記載しました。

条件の設定をInspectorウィンドウからできるようにするため、[SerializeField]のフィールドとして、フラグ名、フラグの値を作成しています。

CheckCondition()の中身では、指定したフラグ名の状態を取得して、Inspectorウィンドウで設定した値(trueまたはfalse)に合致しているかどうかを返します。イベントの条件確認は頻繁に行いたいので、GetComponentやFindAnyObjectByTypeを使う形ではなく、シングルトンのstaticなインスタンスを使うようにしています。だから、前々回シングルトンにする必要があったんですね。

ゲーム内では、イベント関連のデータをまとめる「EventFileData」の子オブジェクトを検索して、各ページに対応する条件を確認して、合致するページのイベントを実行していきます。確認する順番としては、下の方にあるゲームオブジェクトが手前に表示されるUIと同じようなイメージで、下の方にあるページから確認していきたいと思います。

  • ページ1
  • ページ2
  • ページ3

のようにHierarchyウィンドウで並んでいたら、ページ3から上に向かって順番に確認する形です。

イベントページからは複数の条件をリストとして保持する形にする予定で、複数のフラグを条件にすることもできるようにします。

今回もまだ動作の確認までは進めないので、コンパイルしてエラーがないことが確認できたらOKです。

 

今回のブランチ

 

まとめ

今回は実行するイベントのページの条件を設定するクラスについて実装しました。イベントの条件によって処理する内容を切り替えるのはRPGだと重要な部分ですね。

次回はイベントをまとめるクラス、イベントページ、イベントプロセスのベースクラスなど、イベントの定義を行うクラスについて実装します。

 

     

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

CTA-IMAGE

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


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


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