← SEARCHABLE ARCHIVE
Unreal Engine · 2026-07-01

GameMode、PlayerController、GameInstanceの役割

ProjectTBのメニューと戦闘構造で見るUnreal Framework

INTERACTIVE READING MODE →

本ブログ作成文は、講義を目指して製作されました。 また、作成された文章の情報も間違っている可能性がありますので、ご注意ください。

Unrealプロジェクトが大きくなると、GameMode、PlayerController、GameInstanceに機能を何でも入れ始めるのは簡単です。 ProjectTBではメインメニューと戦闘を分離しながら各クラスの責任を再整理した。

GameModeは現在ワールドのルールです

TBMainMenuGameModeはメインメニューの流れを担当し、TBGameModeは遠征と戦闘規則を担当する。 あるGameModeがメニュー、キャラクター選択、戦闘を全部抱きしめなかった。

MainMenu World
TBMainMenuGameMode
TBMainMenuPlayerController
TBMainMenuWidget

Battle World
TBGameMode
TBPlayerController
TBExpeditionHUDWidget

GameModeはワールドが変わると新しく作られる。 したがって、現在の戦闘の勝敗、バッチ制限、敵生成のように該当ワールドのルールを入れるのが良い。

PlayerControllerはプレーヤーの入力と意図です

PlayerControllerは、マウスクリック、選択、カメラ入力など、プレーヤーがワールドに降りるコマンドを接続します。 ProjectTBでは左クリック味方選択と敵ホバー情報を分離し、戦闘ターゲット指定は別途の状態に保った。

UIボタンが押されたとすべてのロジックをWidgetに入れるよりControllerやGameModeの検証関数でリクエストを送る方が安全だ。

GameInstanceはワールド間でも生き残る

GameInstanceはマップを移動しても保持されます。 メインメニューで選択したキャンペーン情報やグローバルSubsystemのように、ワールドより長い寿命のオブジェクトを置くのが良い。

しかし、すべてのグローバル変数をGameInstanceに追い込むと、巨大な管理者クラスになります。 UI、保存などの独立した責任はUGameInstanceSubsystemで分離できます。

クラスを選ぶ基準は快適なアプローチではありません。 データがどのワールドまで生きなければならないのか、誰がルールを検証しなければならないのか、入力の所有者が誰であるのかから決めなければならない。