【Unity】RPGを作るチュートリアルその26 実行時のキャラクターの状態を保持

【Unity】RPGを作るチュートリアルその26 実行時のキャラクターの状態を保持

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

第25回では各定義データを管理する仕組みの準備として、Addressablesを導入して、定義データをグループごとに分けていきました。データのまとまりごとにラベルを設定して、ラベル単位でロードできるようにしてあります。

今回は実行中のキャラクターの状態(現在のHPやMPなど)を保持するためのクラスを作成していきます。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

チュートリアルの一覧

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

 

前回の内容

前回は各定義データを管理する仕組みの準備として、Addressablesを導入して、定義データをグループごとに分けていきました。

 

実行時のキャラクターの状態を保持するクラス

キャラクターに関してはパラメータ表の定義データで最大HPや最大MPなどのパラメータを定義しています。実際にゲームを動かすにあたっては、実行中のキャラクターの状態を保持するクラスを用意しておきたいと思います。

現在のHPやMP、装備中の武器や防具のID、覚えた魔法のリストなどは、実行中に変化していくため、なるべくいつでも参照できるようにしたいと思います。というのも、現在のキャラクターのステータスを見る場面としては、フィールド移動時にメニューを開いたり、戦闘時に画面に表示したりと、さまざまな場面があります。キャラクターの状態を保持するクラスについては個別のクラスで実装して、その一覧をstaticなクラスで参照できるようにする方向で進めたいと思います。

個別のキャラクターの状態を保持するクラスでは、

  • キャラクターのID
  • キャラクターのレベル
  • キャラクターの経験値
  • 現在のHP
  • 現在のMP
  • 装備中の武器のID
  • 装備中の防具のID
  • 覚えた魔法のIDのリスト
  • キャラクターが倒されたフラグ

を保持させます。キャラクターの経験値は敵を倒すごとに増えていきます。覚えた魔法のIDのリストは、レベルアップ時にレベルと魔法の対応表を確認して、それを超えていたら覚えた魔法のIDを追加していきます。レベルと魔法の対応表を使うことで直接覚えた魔法を計算する方法もありますが、イベントなどで魔法を覚えるケースに備えて今回の方法で実装したいと思います。

また、今回のチュートリアルではステータス異常を実装しないことから、戦闘不能のステータスも定義していませんでした。そのため、戦闘中に現在のHPが0になったタイミングで、キャラクターが倒されたフラグをtrueにして撃破判定を行うようにします。といっても今回はパーティメンバーがひとりしかいないので撃破されたらすぐゲームオーバーになります。

所持金やアイテムは、キャラクター個別に持たせるのではなくパーティ全体に持たせるようにしたいので、個別のキャラクターの状態クラスにはフィールドを追加していません。

上記を踏まえてクラスを実装していきましょう。

 

実行時のキャラクターの状態を保持するクラスの作成

Projectウィンドウの「Assets/Scripts」のフォルダにて、空のスクリプトファイルを作成します。名前は [CharacterStatus] にしました。

スクリプトファイルの作成
スクリプトファイルの作成

 

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

定義データとしては使いませんが、実行時にセーブデータとしてファイルを保存するにあたって、JSONUtilityでもシリアライズしてくれるように[Serializable]をつけています。今後作成予定の、キャラクター全体やパーティのアイテムを保持するクラスにて、このクラスをリスト形式で参照する予定なので、そのクラスごと保存できるように考えています。

今回はまだ動作確認はできないので、スクリプトを保存してコンパイルエラーなどがなければ完了です。

 

今回のブランチ

 

まとめ

今回はキャラクターの実行中の状態を保持するクラスを作成しました。このクラスはキャラクター個別の状態を保持するので、後の回でキャラクター全体の状態を保持するクラスも作っていきます。

次回はパーティ単位で保持しているアイテムの情報を保持するためのクラスを作成します。このクラスも、キャラクター全体の状態を保持するクラスから参照する予定です。

 

     

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

CTA-IMAGE

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


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


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