UProceduralMeshComponent* ProceduralMeshComponent = NewObject<UProceduralMeshComponent>(MyActor);
UProceduralMeshComponent* ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));
NewObject函数
示例代码 :创建并添加到Actor中
UProceduralMeshComponent* ProceduralMeshComponent = NewObject<UProceduralMeshComponent>(newActor);
ProceduralMeshComponent->RegisterComponent();
ProceduralMeshComponent->AttachToComponent(newActor->GetRootComponent());
CreateDefaultSubobject函数
- 创建方式:传入类名作为模板参数,以及传入形参作为对象名。
- 上下文环境:通常在
Actor的构造函数中使用,创建默认子对象。 - 实例化方式:创建一个新的子对象,并返回其指针。
- 内存管理:自动内存管理,不需要手动释放。
- 使用场景:构造函数中,会自动注册,不能在其他地方使用。
示例代码:在Actor构造函数中使用
MyActor::MyActor()
{
PrimaryActorTick.bCanEverTick = true;
UProceduralMeshComponent* ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));
ProceduralMeshComponent->SetupAttachment(GetRootComponent());
}