fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE4 グローバルな値を持つ(Game Instance、Get Game Instance)

パーシスタンとレベルを切り替えるときに、切り替える前の値を保持する方法です。
一応「Save Game Object」を使えばできなくもなさそうなのですが、あれはセーブデータっぽいので。

・UE4 レベルを跨いで値を保持するGameInstanceについて
http://unrealengine.hatenablog.com/entry/2014/08/28/203638

上記のページを参考にしています。
ゲームを起動時にレベルを移動しても消えないクラスである「Game Instance」というものがあります。
こいつに対して変数を持つことで、グローバル変数みたいな扱いをすることができます。

まず、「Game Instance」ブループリントクラスを作成します。
セーブデータ000

すべてのクラスから「Game Instance」を作成します。
GameInstance000.jpg
名前は特になんでもよさそうです。
とりあえずは「Test Game Instance」という名前にしました。

プロジェクト作成時はデフォルトの「Game Instance」が設定されているので、
先ほど作成したクラスを使うように設定します。
「編集」の「プロジェクト設定」を選択します。
スプラッシュスクリーン001

「プロジェクト」の「マップ&モード」の「Game Instance」の項目で、
先ほど作った「Game Instance」ブループリントクラスを設定します。
GameInstance002.jpg
そうすると、このプロジェクトでは先ほど作った「Game Instance」クラスが使われるようになります。

あとは、作成したブループリントクラスにグローバルで持ちたい変数などを追加します。
GameInstance003.jpg
これでもう設定はいろいろ終了です。

あとは、「Get Game Instance」ノードを使って
ブループリントクラスを取得して変数にアクセスします。
GameInstance004.jpg
「Get Game Instance」で取得したものを
「Cast To ブループリントクラス名」で変換しないと扱うことができないので注意しましょう。
こんな感じでアクセスして使うことができます。

割といろいろと「Game Instance」に入れてしまいそうな気がしますが、
増えすぎるとそれはそれでという感じになりそうなので、扱いには気を付けたほうがよさそうです。

| UE4 | 17:30 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/181-4a886093

TRACKBACK

PREV | PAGE-SELECT | NEXT