7.

UE5のBPでとあるアクタから現在開いているレベルの変数にアクセスする方法

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

Unreal Engine 5(UE5)では、ゲーム内でさまざまな情報を管理するために、アクタやレベルに関連する変数を操作することが頻繁にあります。特に、ブループリント(BP)で別のアクタから現在開いているレベルの変数にアクセスする方法は、複数のレベルやアクタ間で情報を共有する際に非常に有用です。この記事では、UE5のブループリントを使って、現在開いているレベルの変数にアクセスする方法について、わかりやすく解説します。

1. 現在開いているレベルとは?

まず、現在開いているレベルについて簡単に理解しておきましょう。UE5では、レベルという単位でゲームのワールドが分かれており、プレイヤーが進行するにつれて異なるレベルがロードされます。これにより、異なるシーンやマップが切り替わります。

レベルごとに設定された変数は、そのレベル内でアクセス可能ですが、異なるレベル間で情報を共有したい場合、別の方法でその変数にアクセスする必要があります。例えば、ゲームの進行状況を管理するために、現在開いているレベルの変数にアクセスすることが求められることがあります。

2. アクタからレベル変数にアクセスする方法

アクタから現在開いているレベルの変数にアクセスするためには、まずその変数を格納しているレベルの情報を取得する必要があります。UE5では、これを実現するためのいくつかの方法がありますが、最も一般的な方法はGameModeを利用することです。

ゲームモードは、プレイヤーの操作やゲームの進行に関する情報を管理するために使用されます。レベルごとに異なるゲームモードが設定されており、そのゲームモード内にレベル専用の変数を格納しておくことができます。

3. ゲームモードを使ったアクセス方法

ゲームモードに格納されている変数にアクセスするためには、まずGet GameModeノードを使用して現在のゲームモードを取得します。次に、ゲームモードに格納された変数にアクセスすることで、必要な情報を取り出すことができます。

具体的な手順は以下の通りです:

  1. ブループリント内で「Get GameMode」ノードを配置します。このノードは、現在実行中のゲームモードを取得します。
  2. ゲームモードから変数にアクセスするためには、ゲームモードがどのクラスを使っているかを知っておく必要があります。通常、ゲームモードには独自のブループリントクラスを使用することが多いため、そのクラスを指定して変数にアクセスします。
  3. ゲームモードクラスで定義された変数にアクセスするには、「Cast To」ノードを使用し、取得したゲームモードを適切なクラスにキャストします。
  4. その後、キャストしたゲームモードクラスから変数を取り出し、アクタ内で使用します。

これにより、現在のレベルのゲームモードに設定された変数を他のアクタからアクセスすることができます。

4. ワールド設定を利用したアクセス方法

ゲームモード以外にも、ワールド設定を使って現在開いているレベルの変数にアクセスする方法もあります。ワールド設定は、現在のワールドに関連する設定や変数を管理するためのものです。

この方法を利用する場合、まずワールド設定から必要な情報を取得します。これには、ワールド設定内に格納された変数を取得するためのノードを使用します。

手順としては、以下のようになります:

  1. ブループリント内で「Get World Settings」ノードを配置します。
  2. 取得したワールド設定から、必要な変数を取得します。これには、変数名に対応する「Get Variable」ノードを使用します。
  3. 取得した変数を使用して、アクタ内で必要な処理を行います。

この方法では、ゲームモードと異なり、ワールド全体で共有される変数にアクセスできるため、ゲームの進行状況や状態に依存しない処理を行う際に有用です。

5. 変数にアクセスする際の注意点

レベルの変数にアクセスする際にはいくつかの注意点があります。

  • 変数のスコープに注意してください。ゲームモードやワールド設定に格納されている変数は、基本的にその範囲内でのみアクセス可能です。変数が他のアクタやレベルで共有されている場合、その変数が適切に公開されているか確認する必要があります。
  • Null Reference」エラーを避けるために、変数にアクセスする前に、必ずその変数が正しく設定されているかをチェックすることが重要です。変数がnullの場合、アクセスしようとするとエラーが発生する可能性があります。
  • 複数のアクタから同じ変数にアクセスする場合、同期の問題に注意してください。特にマルチプレイヤーの場合、変数の状態が複数のクライアント間で異なる可能性があるため、データの同期を考慮する必要があります。

まとめ

UE5でアクタから現在開いているレベルの変数にアクセスする方法として、ゲームモードやワールド設定を利用する方法があります。ゲームモードを使う場合は、現在のゲームモードを取得し、そのゲームモードクラスに格納された変数にアクセスします。また、ワールド設定を使う場合は、ワールド全体に影響を与える変数にアクセスすることができます。どちらの方法も、レベル内の変数をアクタからアクセスする際に非常に便利ですが、変数のスコープや同期の問題を考慮することが重要です。

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
  1. レベルを移動する方法
  2. レベルの「基本」テンプレートと「オープンワールド」テンプレートの違い
  3. Blueprintで現在開いているレベルが特定のレベルであるか調べる方法
  4. レベルごとにゲームモードを変更する方法
  5. 動的にインスタンスが属するレベルを変更する方法
  6. エディタ上でインスタンスが属するサブレベルを変更する方法
  7. とあるアクタから現在開いているレベルの変数にアクセスする方法
  8. プロジェクトを開いたときの最初のレベルを変更する方法