[以前の質問][1]にてRemovePlayerの存在を教えていただいたのですが、これを用いてPlayerを削除しようとしても削除されないことがあり、そのせいで入力受付の不具合が起きてしまっています。
具体的には以下のような流れで不具合が確定で発生します。
- セレクト画面で前レベルで作成し残っているPlayerController0~3を削除し、1~4Pのプレイヤー(PlayerControllerは0~3)を作成
- Load画面へ「OpenLevel」で遷移。Stageをサブレベルに置き「LoadStreamLevel」で非同期読み込みして表示
- Stageで実装しておいたポーズ画面を開き、セレクト画面へ「OpenLevel」で遷移(遷移前にPlayerController0~3削除)
- セレクト画面のレベルBPのBeginPlayで残っている全PlayerControllerを削除
- 削除したはずのPlayerControllerが残っており、入力受け付けを吸われてしまう不具合を起こす
※2において、非同期ロードしなくても同様のバグが発生します。
※3において、遷移前に全PlayerControllerを削除しようとした場合、PlayerController1, 3が削除されず、セレクト画面でPlayerController0のみが初めから存在します(PlayerStartはセレクト画面に置いていません)。
以下は検証BPと結果です。
削除直後に残存確認BPを置く。
特にエラーを吐くこともなくRemovePlayerが実行されているが、PlayerController0,1だけが何故か残っている。削除に時間がかかっているのかと思いDelayを置くが同様の結果。
Possesを設定すれば確かに済む話ではあるのですが、根本的解決にならないのと、本当に全PlayerControllerを完全削除したい場合が万が一に発生した場合の解決策としたいというのがあります。
これが何故発生してしまうのか、また解決策をご存じの方がいたらアドバイスの方よろしくお願いいたします。