メモ程度だと思って見てください。
TWeakObjectPtrって何ですか?
UObjectの弱参照するためのスマートポインタらしい。
スマートポインタって何ですか?
勝手にイイ感じにメモリ管理してくれるポインタのようだ。
newだのdeleteだの動的確保や解放を考えるコストが減る。
(筆者はnewやdeleteを深く考えるプログラミングを経験したことがあまりない…)
- スマート ポインター (Modern C++) | Microsoft Learn
- Smart Pointers in Unreal Engine | Unreal Engine 5.6 ドキュメンテーション | Epic Developer Community
弱参照って何ですか?
ガベージコレクトするとき、どこかに参照があるObjectは破棄されませんが
弱参照の場合はその破棄を防止しないらしいです。
なので、参照先の存続を制御しないということですね。
- Unreal Engine での Weak Pointers | Unreal Engine 5.6 ドキュメンテーション | Epic Developer Community
- TWeakObjectPtr | Unreal Engine 5.6 Documentation | Epic Developer Community
- FWeakObjectPtr | Unreal Engine 5.6 Documentation | Epic Developer Community
弱参照のメリットは?
- ガベージコレクションで破棄されたときにTWeakObjectPtrがnullptrになる。
- なので不正参照も防止できる。
じゃあどんな時使うのよ。
- Subsystemが一時的にレベルのアクターを参照する場合があるとき。
- アクターの参照があったら何かする程度だとピッタリの使い方だと思う。
- AI等でのターゲットの参照
- ターゲット消滅などあり得るのでこちらもピッタリだと思う。
- EditorUtilityなどでレベルの参照を一時的に取得もそうですね。