【Unity】RPGを作るチュートリアルその37 戦闘機能全体の管理クラス
- 2025.03.05
- RPGチュートリアル
- RPG, Unity, ゲーム開発, チュートリアル

シンプルなRPGをUnityで作るチュートリアルシリーズの37回目です。
第36回ではゲーム内のキー入力を検知するためのラッパークラスを作成しました。
今回はいよいよ戦闘の機能全体を管理するクラスを作成していきます。作成するクラスの繋がりを確認しつつ、まずは管理クラスの枠組みだけ作っていきましょう。
制作環境
MacBook Pro 2023 Apple M2 Max
Unity6 (6000.0.30f1) Silicon
作業内容と順序
シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。
チュートリアルの一覧
このシリーズ全体の一覧は以下のページにまとめています。
前回の内容
前回はゲーム内のキー入力を検知するためのラッパークラスを作成しました。
戦闘関連機能の繋がり
戦闘関連の機能はかなり大きくなりそうなので、簡単ではありますがフェーズごとにどんな処理を行なって、どんなクラスを作っていくのかの概要を図にしました。

イベントだったり、エンカウントによって戦闘が発生したことを「BattleManager」という戦闘機能を管理するクラスに通知します。このクラスでは基本的には自前で処理を行わず、全体の進行を管理するイメージです。図ではフェーズの単位で必要な機能に分けており、戦闘のフェーズが進んでいくごとに、「BattleManager」からそれぞれの担当者に指示を出して処理を行なっていきます。処理後はまた「BattleManager」に処理結果を通知することで、「BattleManager」側で判断して次に進めていきます。
「Manager」とつくクラスは意識してそのクラス内での作業を減らしていくと良いかと思います。ひとつのクラスに何種類もの役割を持たせるとコードを書いたり保守したりするのも大変なので、役割ごとに分けていきましょう。
UIに関しては、
- HP/MPの表示エリア
- コマンド入力エリア
- 敵の名前表示エリア
- 項目選択のエリア
- メッセージ表示エリア
の5つの画面についてそれぞれウィンドウとみなして、基本方針としてはウィンドウを制御するクラス、ウィンドウ内でUIを制御するクラスの組み合わせで実装したいと思います。
また、戦闘機能の作成中に確認を行うため、Inspectorウィンドウのトグルを切り替えることで戦闘開始の処理を呼べるようにもしておきたいと思います。動作確認もなるべく早めにできるようにします。
大まかな流れとしては上記のような形で進めていきたいと思います。個々のフェーズで必要なクラスに関しては随時追加していきましょう。
戦闘の機能全体を管理するクラスの作成
まずはファイルだけ先に作って、必要な処理が出てきたタイミングで内容を追記していきます。Projectウィンドウから「Assets/Scripts/Battle」のフォルダを開き、MonoBehaviourのスクリプトを作成します。名前は [BattleManager] にしました。

作成した「BattleManager」の中身は以下のように記載しました。
現時点では他のクラスを作っていないので、まずは「BattleManager」自身で保持する情報用のフィールドを作成しました。現在の戦闘フェーズ、選択されたコマンド、敵キャラクターのID、戦闘開始からのターン数を保持するようにしています。
敵キャラクターのIDについてはint型にしています。このチュートリアルでは1対1の戦闘にする仕様のためです。複数の敵キャラクターが出現する場合は、リスト型などに変更すると良いかと思います。
戦闘開始からのターン数は、敵キャラクターの行動パターンとしてターン数の条件を入れていることから保持するようにしています。他にも行動パターンの条件に使えそうな値があれば、フィールドとして用意しておくのも良いかと思います。
BattleManagerのゲームオブジェクトの作成
シーン内に「BattleManager」のゲームオブジェクトを作成します。Hierarchyウィンドウにて、「BattleParent」の下に新しく空のゲームオブジェクトを作成します。名前は [Managers] にしました。このゲームオブジェクトの下に管理用のクラスやコントローラ用のクラスを入れていきます。今回作成した「BattleManager」をアタッチするためのゲームオブジェクトも空のゲームオブジェクトとして作成しましょう。こちらの名前は [BattleManager] にしました。

作成した「BattleManager」のゲームオブジェクトを選択し、Inspectorウィンドウから「BattleManager」のスクリプトをアタッチします。現時点では参照をアサインするフィールドは用意していませんが、今後役割を持ったクラスが増えるにしたがってフィールドも増えていく想定です。

今回はまだ動作確認はないので、コンパイルエラーがなければ完了です。
今回のブランチ
まとめ
今回は戦闘の機能全体を管理するクラスを作成しました。戦闘のフェーズごとに行いたい処理や役割も異なりますので、そちらは個別にクラスを作って実装していきます。
次回はテスト用に戦闘を開始するための処理を作っていきましょう。付随して作成したいクラスなども多いのですが、順番に実装していきます。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RPGを作るチュートリアルその36 ゲーム内のキー入力のラッパークラス 2025.03.04
-
次の記事
【Unity】RPGを作るチュートリアルその38 テスト用に戦闘を開始する処理の作成 2025.03.06
コメントを書く