测试1:
创建了继承自Actor的类,Spawn后没有rootcomponent,没有transform信息。
测试2:
发现rootcomponent为空。
CreateDefaultSubobject
失败,这个函数只能在构造函数里面调用。
注释:不想在构造函数里增加Component,因为我想动态增加component;
测试3:
RootComponent = NewObject
AddInstanceComponent(RootComponent);
失败。
测试4:
ChildActorComponent = NewObject
AddInstanceComponent(ChildActorComponent);
失败,连scenecomponent显示都没有了。
测试5:
DefaultRootComponent = NewObject
AddInstanceComponent(DefaultRootComponent);
失败,同上。
测试6:
DefaultRootComponent = Cast
SetRootComponent(DefaultRootComponent);
失败,同上。
测试7:
尝试在构造函数里面添加ROOT,然后在其他函数里面Attach到root上面。
RootComponent= CreateDefaultSubobject
继承自Actor的rootcomponent可以显示,但是不能更改里面数值。尝试使用自己的变量:
定义:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AItemInScene")
USceneComponent* DefaultRootComponent;
构造函数:
DefaultRootComponent = CreateDefaultSubobject
SetRootComponent(DefaultRootComponent);
可以显示Root了,也能更改数值。
测试8:
尝试在root上增加component:
ChildActorComponent = NewObject
ChildActorComponent->AttachTo(DefaultRootComponent);
失败,root下什么也没显示。
测试9:
是否是要AddComponent()
ChildActorComponent = NewObject
AddInstanceComponent(ChildActorComponent);
失败,root下什么也没显示。
测试10:
ChildActorComponent = NewObject
ChildActorComponent->AttachTo(DefaultRootComponent, "name", EAttachLocation::KeepRelativeOffset, false);
成功,我想应该是创建时候NewObject的参数问题。汗。。
测试11:
DefaultRootComponent = NewObject
ChildActorComponent = NewObject
ChildActorComponent->AttachTo(DefaultRootComponent, "name", EAttachLocation::KeepRelativeOffset, false);
成功。但是组件里面的参数不能改,而且没有在Actor显示出来,汗。。。
测试12:
DefaultRootComponent = NewObject
ChildActorComponent = NewObject
AddInstanceComponent(DefaultRootComponent);
AddInstanceComponent(ChildActorComponent);
成功,解决所有问题。
最后说一句,
StaticMeshComponent要想在世界中显示,要RegisterComponent
StaticMeshComponent->RegisterComponent();