オブジェクトを両手で持った際に発生する、ウィジェットの不具合について

きちんとコントロールしたければ、生成したActorやComponentは全て変数として確保しておく必要があります

今回の場合、片手で掴んだ時点でまずWidgetActorがSpawnされ、変数に格納されます(これを仮にWidgetAと呼びます)
その後片手で掴んだままもう片方の手で掴むと、更にWidgetActorがSpawnされ、変数に格納されます(これを仮にWidgetBと呼びます)
その際、もとから変数に入っていたWidgetAへの参照は上書きされ、変数にはWidgetBへの参照のみが残ります
こうしてWidgetAは完全にフリーになります

その後、手を放したときに変数に格納されているWidgetをDestroyしますが、変数に格納されているWidgetはWidgetBのみ、WidgetAは誰も参照を持っていないため消すことができなくなります

これが起きていることの全てです

ここで取るべきは以下のいずれかになります

  • IsValid等を用いて、Widgetが1つしか生成されないようにする
  • 配列等を用いて、生成したWidgetの参照を全て掴んでおく

提示されている仕様であれば、IsValidを用いて1つのみに限定する方が良いかと思います

2 Likes