Game Instanceを使ってレベルが変わってもデータを保存できるようにする方法

Game Instanceとは

Game Instanceクラスを使えば、レベルを切り替えても、値を簡易的に保存して値の参照をすることができます。
まず、Blueprint上でGame Instanceを使って値の書き込み・読み取りをする例をみていきます。

Game Instanceを親にしたBlueprintクラスを作成する

コンテンツブラウザ内を右クリック → ブループリントクラス
を選択して、検索ウィンドウにGame Instanceと入力して、Game Instanceを親クラスに設定し
Blueprintを作成します。
ここでは、MyGameInstanceというクラス名にします。

できたクラスをダブルクリックして、編集画面に入ります。
左部に表示されるマイブループリントの変数のプラスアイコンをクリックして、
レベル間においても保存したい変数を追加します。
ここでは、LifeというIntegerの変数を定義しました。
また、外部アクセスできるように、目のアイコンをクリックして、publicにします。

オリジナルのGame Instanceクラスを参照できるようにする

続いて、MyGameInstanceクラスを認識させるための設定をします。

上部メニューから設定 → プロジェクトの設定を選択します。
するとプロジェクト設定ウィンドウが表示されるので、Game Instance Classに
先ほど作成したMyGameInstanceクラスをセットします。

Blueprint上でGame Instanceにアクセスする

続いて、作成したGame InstanceにBlueprint上からアクセスしたいと思います。 Blueprint上で右クリック→検索欄にGameInstanceと入力し、
GameInstanceノードを出現させます。

MyGameInstanceを参照するために、GameInstanceを作成したMyGameInstanceにキャストします。
GameInstanceには、返り値として、GameInstanceオブジェクトを返すので、
そこから、先ほど定義したLifeにアクセスすることができます。

Blueprint図は以下のようになり、ここでは、MyGameInstanceに定義したLifeをdecrementしています。
この値はLevelが変わっても保存されます。

参考ソース

公式のGameInstanceに関するドキュメント、c++でのアクセス方法が書いてあります。

UnrealEngine4.19で確認しています。

このエントリーをはてなブックマークに追加