UE4 グローバルな値を持つ(Game Instance、Get Game Instance)
パーシスタンとレベルを切り替えるときに、切り替える前の値を保持する方法です。
一応「Save Game Object」を使えばできなくもなさそうなのですが、あれはセーブデータっぽいので。
・UE4 レベルを跨いで値を保持するGameInstanceについて
http://unrealengine.hatenablog.com/entry/2014/08/28/203638
上記のページを参考にしています。
ゲームを起動時にレベルを移動しても消えないクラスである「Game Instance」というものがあります。
こいつに対して変数を持つことで、グローバル変数みたいな扱いをすることができます。
まず、「Game Instance」ブループリントクラスを作成します。

すべてのクラスから「Game Instance」を作成します。

名前は特になんでもよさそうです。
とりあえずは「Test Game Instance」という名前にしました。
プロジェクト作成時はデフォルトの「Game Instance」が設定されているので、
先ほど作成したクラスを使うように設定します。
「編集」の「プロジェクト設定」を選択します。

「プロジェクト」の「マップ&モード」の「Game Instance」の項目で、
先ほど作った「Game Instance」ブループリントクラスを設定します。

そうすると、このプロジェクトでは先ほど作った「Game Instance」クラスが使われるようになります。
あとは、作成したブループリントクラスにグローバルで持ちたい変数などを追加します。

これでもう設定はいろいろ終了です。
あとは、「Get Game Instance」ノードを使って
ブループリントクラスを取得して変数にアクセスします。

「Get Game Instance」で取得したものを
「Cast To ブループリントクラス名」で変換しないと扱うことができないので注意しましょう。
こんな感じでアクセスして使うことができます。
割といろいろと「Game Instance」に入れてしまいそうな気がしますが、
増えすぎるとそれはそれでという感じになりそうなので、扱いには気を付けたほうがよさそうです。
一応「Save Game Object」を使えばできなくもなさそうなのですが、あれはセーブデータっぽいので。
・UE4 レベルを跨いで値を保持するGameInstanceについて
http://unrealengine.hatenablog.com/entry/2014/08/28/203638
上記のページを参考にしています。
ゲームを起動時にレベルを移動しても消えないクラスである「Game Instance」というものがあります。
こいつに対して変数を持つことで、グローバル変数みたいな扱いをすることができます。
まず、「Game Instance」ブループリントクラスを作成します。

すべてのクラスから「Game Instance」を作成します。

名前は特になんでもよさそうです。
とりあえずは「Test Game Instance」という名前にしました。
プロジェクト作成時はデフォルトの「Game Instance」が設定されているので、
先ほど作成したクラスを使うように設定します。
「編集」の「プロジェクト設定」を選択します。

「プロジェクト」の「マップ&モード」の「Game Instance」の項目で、
先ほど作った「Game Instance」ブループリントクラスを設定します。

そうすると、このプロジェクトでは先ほど作った「Game Instance」クラスが使われるようになります。
あとは、作成したブループリントクラスにグローバルで持ちたい変数などを追加します。

これでもう設定はいろいろ終了です。
あとは、「Get Game Instance」ノードを使って
ブループリントクラスを取得して変数にアクセスします。

「Get Game Instance」で取得したものを
「Cast To ブループリントクラス名」で変換しないと扱うことができないので注意しましょう。
こんな感じでアクセスして使うことができます。
割といろいろと「Game Instance」に入れてしまいそうな気がしますが、
増えすぎるとそれはそれでという感じになりそうなので、扱いには気を付けたほうがよさそうです。
| UE4 | 17:30 | comments:0 | trackbacks:0 | TOP↑