【Unity】RPGを作るチュートリアルその28 キャラクター全体の状態の管理

【Unity】RPGを作るチュートリアルその28 キャラクター全体の状態の管理

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

第27回では実行中にパーティとして所持しているアイテムの情報を保持するためのクラスを作成しました。

今回はゲームの実行中、キャラクター全体の状態を管理するクラスを追加します。パーティ内のキャラクター、キャラクター個別のステータス、所持金、所持アイテムなど、ゲームを通して使用する値を保持・管理できるようにします。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

チュートリアルの一覧

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

 

前回の内容

前回は実行中にパーティとして所持しているアイテムの情報を保持するためのクラスを作成しました。

 

実行中のキャラクターの状態を管理

ゲームを実行している時のキャラクターの状態はどんどん変化していきます。装備を変更したらそのパラメータを再計算したり、ダメージを受けたら現在HPを減らしたりと、さまざまな場面で値の確認や変更が発生します。そのため、どこからでも参照できるようにstaticなクラスを作って、そこでキャラクター全体の状態を管理したいと思います。

実装したいフィールドとしては、

  • パーティ内にいるキャラクターのIDリスト
  • 各キャラクターのステータスのリスト
  • 所持金
  • 所持アイテムのリスト

です。これに加えて、必要な値を取得したり、値をセットするようなメソッドも追加していきたいと思います。

 

実行中のキャラクターの状態を管理するクラスの実装

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

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

 

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

フィールドは上で実装したいものとして挙げたものを入れています。

「GetCharacterStatusById」のメソッドは指定したIDのキャラクターの情報を返すようにしています。キャラクターの現在のステータスを取得する機能はよく使うことが想定されます。

「IsCharacterDefeated」のメソッドは指定したIDのキャラクターが戦闘不能になったかどうかのフラグを確認します。ダメージ計算時に毎回確認を行いたいので、ステータスを取得してからフラグを確認する、という手順をひとつのメソッドにまとめています。

「IsAllCharacterDefeated」のメソッドは、パーティ内の全キャラクターに関して、戦闘不能かどうかを確認しています。このチュートリアルだとパーティメンバーはひとりなのですが、拡張性を考えてforeachで回して確認するようにしています。

「IncreaseExp」のメソッドではパーティ内のメンバー全員の経験値を増加させます。パーティ内で生存しているキャラクター全員に同じ経験値が入るようにしています。

「IncreaseGold」のメソッドは所持金の増減を行います。戦闘時にゴールドを入手したら増加、お店でゴールドを使ったら減少という形で引数で増減を指定するようにします。

 

いったんここまでのメソッドを追加して今回は完了にしたいと思います。もう少しあると便利なメソッドも追加したいのですが、アイテムの定義データやキャラクターの定義データなどを取得する仕組みを作った後に入れていきたいと思います。例えばアイテムの使用回数を定義データと照らし合わせて所持数を減らすメソッド、キャラクターのHPやMPを増減させるメソッドなどです。

 

今回のブランチ

 

まとめ

今回はキャラクターの情報全体を保持するクラスを作成しました。

次回は定義データを管理するクラスとして、アイテムデータの管理クラスを追加したいと思います。Addressablesを使ったデータのロード、ID指定によるアイテムデータ取得の機能などを実装していきます。

 

     

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

CTA-IMAGE

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


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


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