【UE4】自作した RootComponent の詳細が表示されない場合は UPROPERTY として保持する

C++で以下のようにコンポーネントを生成し、RootComponent に追加すると詳細パネルに何も表示されません。

AMyActor::AMyActor()
{
  RootComponent = CreateDefaultSubobject<UBoxComponent>("BoxComponent");
}

f:id:shuntaendo:20191002175235p:plain:w400

このようになった場合は結論から言うと UPROPERTY として保持しておけば表示されるようになります。

では、実際に UBoxComponent を RootComponent として登録してみます。
まずは UBoxComponent のポインタを UPROPERTY として保持します。その際に VisibleAnywhere 指定子を追加しておきます。

public:
  UPROPERTY(VisibleAnywhere)
  class UBoxComponent* BoxComponent;


コンストラクタでは上で作成したポインタに渡してから RootComponent に登録します。これで実行すると、

AMyActor::AMyActor()
{
  BoxComponent = CreateDefaultSubobject<UBoxComponent>("BoxComponent");
  RootComponent = BoxComponent;
}


表示されるようになります!
f:id:shuntaendo:20191002182739p:plain:w600