Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 レベルを跨いで値を保持するGameInstanceについて

UE4.4からレベルを遷移しても変数の値を保持してくれる、GameInstanceという永続的なオブジェクトが使えるようになりました。

今までもセーブデータとしてレベルを跨いで値を保持することができましたが、GameInstanceはあくまでもスタティックな値としてゲーム中にずっと存在することができます。使用する場合は、以下のように設定します。

新規のブループリントからカスタムクラスで"GameInstance"を選択します。名前をつけて保存する場所も決めます。

f:id:alwei:20140828202405j:plain

"編集"→"プロジェクト設定"から"マップ&モード"を選び、"Game Instance"のクラスを自分で作ったGameInstanceクラスに変更します。

f:id:alwei:20140828202756j:plain

自分で作成したGameInstanceのブループリントを開き、なんでもいいので変数を作成して初期値を設定しておきます。これでその値はゲーム中にどのレベルに遷移しても保持されています。

試しに以下のような感じでレベルブループリントを作成し、遷移させてみます。

f:id:alwei:20140828203031j:plain

即時に別レベルを開いていますが、直前でGameInstanceで作成したstring変数に値を設定しているので、次のレベルにいってもそのまま使用することができます。

 これでゲーム中に永続的に使うことができるので、ゲーム全体を通して管理することができます。ただし、なんでもかんでもここに置いてしまうと混乱する可能性もあるので、ほどほどにしましょう。

永続的な値を色々なところで使うと依存性が強くなり、その影響力故の問題が起きる可能性もあります。

GameInstanceのご利用は計画的に!