跳至主要內容

F19.RegisterComponent|组件

Mr.Si小于 1 分钟u++

头像
RegisterComponent的几种方法

1.使用CDO:

头像
只可在构造函数中创建。
	SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
	SpringArm->SetupAttachment(RootComponent);
头像
有时候需要动态创建组件,比如一些组件中挂载其他组件,使用CDO可能会失效。

2.使用 NewObjectRegisterComponent

// 创建 Actor Component
USkeletalMeshComponent* SkeletalMeshComponent = NewObject<USkeletalMeshComponent>(this, USkeletalMeshComponent::StaticClass(), TEXT("SkeletalMeshComponent"));

// 注册组件
SkeletalMeshComponent->RegisterComponent();

3. 使用 AddInstanceComponent

USkeletalMeshComponent* SkeletalMeshComponent = AddInstanceComponent(USkeletalMeshComponent::StaticClass(), TEXT("SkeletalMeshComponent"));
SkeletalMeshComponent->SetRelativeTransform(InStruct.SkeletalTransform);
头像
  • AddInstanceComponentUActorComponent 的一个成员函数,用于在运行时添加一个新的组件实例到 AActor 上。
  • 这个方法内部实际上也是使用了 NewObjectRegisterComponent,但是提供了更简化的接口,特别是在 AActor 子类中更方便。