今回はUE4でどこからでも呼びだし扱うことのできるクラスを実装したいと思います。
結論から言うとUE4のGameInstanceクラスの中に呼び出したいクラスを所有させます。
そもそもGameInstanceとはクラス
UE4に備わっていて、ゲームの起動から終了までずっと情報を保持し続けるクラスで、
インスタンスを取得する関数を作れば何処からでも呼び出すことが出来ます。
(レベルをまたいでも使うパラメータなどによく使われる)
1.GameInstanceの中にゲーム中常に使用したいクラスをメンバに加える
####※UPROPERTYを頭に必ず書くこと
書き忘れるとUE4側でレベルを切り替える際にGCで勝手にメモリを消されてします
2.初期化と削除時にクラスの生成と解放を行う
GameInstance専用の仮想関数があるのでオーバーライドして
Initでクラスの生成を行い Shutdownでクラスを解放を行う
####これで後はGameInstanceを経由してクラスを参照すればどこでも呼び出せるクラスの完成
おわりに
自分でSingletonパターンでクラスを実装したり新機能のSubsytemなど使って色々試してみたのですが。
この方法が簡単で分かりやすく勧めれそうでした。