【Unreal Engine5】GameModeで設定できるクラスとライフサイクル
はじめに
Unreal Engineを始めるとき、どこから手を付けよう... となりませんか? 僕はなりました。
GameState
PlayerController
GameInstance…
管理クラスが多くて、どこに何を書くのが正解か分からん...。
↑ のクラスは、GameModeで設定できるクラスですが、結局これってどういうやつなの?解き明かしたい!

UEのメインループってどこ?
DirectXやC++で0から作っていた方は、main()関数などを使ってメインループを回していたと思いますが、UEにおいてはこれを開発者が直接書くことはありません。
UEの処理は大まかに以下の階層で駆動しているようです。
- Engine Loop : エンジンがハードウェア入力や時間を計算
- World Tick : 現在のレベル
(UWorld)に更新を命令 - Actor Tick : レベルが、配置されているすべての
Actor・ComponentのTickを呼ぶ
つまり、ループそのものを作る必要はなく、エンジンから呼び出されるTickに処理を書き込む のがUEのスタイルということです。
クラスの役割とライフサイクル
そもそもGameModeで設定できる管理クラスはいつからいつまで使用できるんだろう?そのライフサイクルを知っておいた方がよさそうです。
↓↓ GameModeで設定できるクラスを寿命の長い順に紹介します。 ↓↓
【寿命:長い】ゲーム起動中、常に生存(永続)
このクラスは常に生存します。削除されることはありません。
| クラス名 | 役割 |
|---|---|
| GameInstance | ゲーム全体で保持するデータを管理 |
【寿命:普通】レベル内で生存
対象のレベルがロードされていると生存しています。
他のレベルに移動すると削除され、新しいインスタンスが生成されます。
| クラス名 | 役割 | 主な使用例 |
|---|---|---|
| GameMode | レベルのルール設定 | 勝利条件の判定・プレイヤーのスポーン地点設定 ※ マルチプレイ時は、サーバー上のみ存在する |
| GameState | ゲームの盤面 | 現在のスコア・チームの点数(UIに表示したいデータ) ※ マルチプレイ時は、全プレイヤーに同期 |
| PlayerController | プレイヤー操作 | 入力の受信・HUD(キャラが消えてもHUDは消えないので)・カメラ操作 |
【寿命:短い】物体(Actor)の生存に依存
Actorが存在しているときに生存しています。
倒されたなどして、Actorが消えると共に削除されます。
| クラス名 | 役割 | 主な使用例 |
|---|---|---|
| Pawn / Character | PlayerControllerに動かされる物体 | HP・攻撃力・エモート |
まとめ
「どこに何を書けばいいか分からない...」を解決するために、
どこからどこまで生きるか(ライフサイクル) を知ることは、非常に大事なんじゃないでしょうか?
どのクラスがどういう意味があるのか、多すぎて分からなかったり・忘れたりするので、
こうしてメモしておくことも大事ですね。
GameModeでは設定しませんが、管理するクラスとして、SubSystem というものがあります。
そちらについては別記事にまとめようとしているので、気になる方はお待ちいただければと思います。
参考資料
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/world-settings-in-unreal-engine
Discussion