より良いデータテーブルへの参照切り・ソフト参照の方法を知りたい

多量の行を持つデータテーブルを参照したいが、メモリの節約のためにソフト参照で必要なときのみ参照したい。といった場合があると思うのですが、直接GetDataTableRowにデータテーブルを指定するとハード参照になってしまうためデータテーブル型のソフト参照タイプの変数を作成してロード、そこからGetDataTableRowで取得しようとすると下図のようにエラーが出ます。


なので、以下試してみたのが、
データテーブルを参照するアクターとインターフェースを作成し、本来データテーブルを直接取得したいBPから、データテーブルを参照するアクターをスポーンさせてインターフェースでRowNameを指定するための変数を送り、データテーブルから取得、という方法です。
(以下画像です。)
ss01


(今回はやってませんが、本来データテーブルを直接取得したいBP側でデータテーブルの値を使いたい場合はインターフェースの返り値から取得しようと思ってます。)

下図のリファレンスビュアーを見てもわかる通り、上記の手順で一応データテーブルへのハード参照を避けることができてはいるのですがより良い方法があれば教えていただけると嬉しいです。

データテーブルを直接取得したい側のBPがデータテーブルの直接参照を持ちたくないということであれば
例えばデータテーブルをPrimaryAssetに登録してAssetManagerで任意にロードするということが出来ると思います(ただ、C++が必要なやり方になると思います)

ただ、メモリ消費の問題であればデータテーブル自体の間接参照よりも、データテーブルが参照しているアセットが関節参照になっているほうがより意味があると思います。
もちろん場合によるとは思うのですが、データテーブルは常駐(一度ロードしたらロードしっぱなし)という運用が多いかなぁという気がします。
ご参考までに。

1 Like

返信ありがとうございます。

なるほど…C++はまだあまり触っていないので後で色々調べてみようと思います。

はい、データテーブルに画像を持たせておいた場合などにソフト参照のほうが好ましいということですよね。言葉足らずでしたがこれはその上での話でした<m(__)m>

参考になります!

解決とさせていただきます。

ありがとうございました。