[UE] C++ TWeakObjectPtrって何ですか?

メモ程度だと思って見てください。

TWeakObjectPtrって何ですか?

UObjectの弱参照するためのスマートポインタらしい。

スマートポインタって何ですか?

勝手にイイ感じにメモリ管理してくれるポインタのようだ。
newだのdeleteだの動的確保や解放を考えるコストが減る。
(筆者はnewやdeleteを深く考えるプログラミングを経験したことがあまりない…)

弱参照って何ですか?

ガベージコレクトするとき、どこかに参照があるObjectは破棄されませんが
弱参照の場合はその破棄を防止しないらしいです。
なので、参照先の存続を制御しないということですね。

弱参照のメリットは?

  • ガベージコレクションで破棄されたときにTWeakObjectPtrがnullptrになる。
    • なので不正参照も防止できる。

じゃあどんな時使うのよ。

  • Subsystemが一時的にレベルのアクターを参照する場合があるとき。
    • アクターの参照があったら何かする程度だとピッタリの使い方だと思う。
  • AI等でのターゲットの参照
    • ターゲット消滅などあり得るのでこちらもピッタリだと思う。
  • EditorUtilityなどでレベルの参照を一時的に取得もそうですね。