この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:T
更新日時:2025-04-07 22:25:49

タイトル: ブループリントでレベル間のパラメータを受け渡す方法
SEOタイトル: UE5ブループリントでレベル間のパラメータを受け渡す方法

Unreal Engine 5(以下、UE5)では、異なるレベル間でデータを共有・受け渡す場面が頻繁に発生します。 たとえば、タイトル画面で選択したキャラクターや設定をゲーム本編のレベルへ渡したい場合などが典型的な例です。 本記事では、ブループリント(Blueprint)を使って、レベル間でデータをやりとりする方法を、具体的かつ丁寧に解説していきます。

おすすめの方法:GameInstanceを活用する

レベルをまたいでデータを保持するには、GameInstanceという仕組みを使うのが最も一般的でおすすめです。 これはエンジンがアプリケーション起動から終了まで生存する特別なクラスで、レベルを切り替えてもリセットされません。

GameModePlayerControllerも似たような用途に思えますが、これらはレベルを移動するときに破棄・再生成されるため、永続的なデータ保持には向いていません。

ステップ1:GameInstanceを継承したクラスを作成

まずは、BlueprintベースのGameInstanceクラスを作成します。

1. コンテンツブラウザを右クリックし、「Blueprint Class」を選択
2. 「All Classes」を表示し、GameInstanceを検索して選択
3. 任意の名前(例:MyGameInstance)を付けて保存

このクラスに、渡したいパラメータ(変数)を追加します。たとえば、選択キャラの名前を渡したい場合は、String型の変数を追加します。

ステップ2:プロジェクト設定で使用するGameInstanceを指定

作成したGameInstanceを使うためには、プロジェクト設定で明示的に指定する必要があります。

1. メニューバーから「Edit(編集)」→「Project Settings」を選択
2. 左側のメニューから「Maps & Modes」を開く
3. 「Game Instance Class」の項目で、先ほど作成した「MyGameInstance」を選択

ステップ3:レベルAでデータをセット

たとえばタイトル画面でプレイヤーがキャラを選んだ後、その名前をGameInstanceに格納するコードは以下のようになります。

1. ブループリント内で「Get Game Instance」ノードを追加
2. 「Cast To MyGameInstance」ノードを使って、作成したGameInstanceクラスにキャスト
3. キャスト後の出力ピンから、作成した変数(例:SelectedCharacterName)にSetノードで値を代入

ステップ4:レベルBでデータを取得

データを取得したいレベルでは、以下のようにします。

1. イベントグラフの「BeginPlay」などで処理を開始
2. 「Get Game Instance」→「Cast To MyGameInstance」
3. キャスト後、変数をGetノードで取得し、必要に応じてUIやゲームロジックに渡します

補足:データ型と初期化タイミングに注意

GameInstanceに保存する変数のデータ型は、レベル間で共有する内容に応じて決めましょう。 単純な数値や文字列だけでなく、構造体や配列、参照型(オブジェクト)も格納可能です。 ただし、オブジェクト参照はレベルが変わると無効になる場合があるため注意が必要です。

また、BeginPlayの実行タイミングなどにより、GameInstanceの変数が未設定のまま参照されることがあるため、Nullチェックを入れておくと安全です。

まとめ

UE5でレベル間のパラメータを受け渡すには、GameInstanceの活用が非常に有効です。 一度セットアップすれば、どのレベル間でも簡単にデータを保持・参照することができます。

本記事で紹介した手順に沿って、実際にプロジェクトに導入してみてください。特にキャラクター選択、設定引き継ぎ、スコアの管理など、さまざまなシーンで役立つ知識になるでしょう。