いつもお世話になっております。
デバッグカメラ操作中にふとしたタイミングでクラッシュすることがあり、確認しましたところプログラム実装に問題があるようでしたので報告させていただきます。
■再現方法
※TemplateのFirst PersonExampleでの再現方法です。
- プロジェクトを開きPlayで開始します。
- コンソールコマンドToggleDebugCameraを入力しデバッグカメラを起動します。
- マウス左ボタンクリックやパッドLT+RT等でアクターを選択します。
- ターゲットのアクターが変わらないようにしてコンソールコマンドDestroyTargetで3.のアクターを削除します。
- GCが発生するまで待つか、コンソールコマンドObj GCを実行します。
- クラッシュします。
■原因
ADebugCameraHUD::PostRender()ではADebugCameraControllerの持つSelectedActorを参照して情報を表示するコードがあります。
このSelectedActorはデバッグカメラ中のマウスクリック等をトリガーとしてADebugCameraController::Select()で設定されますが、生ポインタで保持しているためGCのタイミングにおいて参照箇所で例外が発生してしまう事があるようです。
※これ以外にも同じソースコード内にGDebugSelectedComponentやGDebugSelectedActorなどいくつか生ポインタで保持されているものが存在しています。
弊社ローカル環境ではクラッシュしない様に対応を行っておりかつデバッグ機能ですので、すぐの修正は必要ありませんが将来的に修正を行って頂けますと幸いです。
よろしくお願いいたします。