1/
USceneComponent *pRootComponent = CreateDefaultSubobject<USceneComponent>(name/*TEXT("RootComponent")*/);
RootComponent = pRootComponent;这个方式创建 Component 只能在 actor的无参数构造函数中.
之后也可以在此构造函数中创建其他的组件
pProcMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(name/*TEXT("RootComponent")*/); //new UProceduralMeshComponent();
pProcMeshComponent->AttachTo(RootComponent);
2/如果程序想动态创建component就不能这样使用了.
需要在其他函数中如此调用:
UProceduralMeshComponent* pProcMeshComponent;//
pProcMeshComponent = NewObject<UProceduralMeshComponent>(this, name, RF_NoFlags, nullptr, false, nullptr);
if (RootComponent == nullptr)
{
FName nameRoot(TEXT("RootComponent"));
USceneComponent *pRootComponent = NewObject<USceneComponent>(this, nameRoot, RF_NoFlags, nullptr, false, nullptr);
//RootComponent = pRootComponent;
//首先注册.否则后面的 attachto 会不显示
SetRootComponent(pRootComponent);
RegisterAllComponents();
}
//else
{
//AddInstanceComponent(pProcMeshComponent);
pProcMeshComponent->AttachTo(RootComponent);
}
//每天加一个 都需要重新注册.
RegisterAllComponents();