虚幻4:C++ Actor增加Component
来源:互联网 发布:javascript 教程 pdf 编辑:程序博客网 时间:2024/05/18 00:19
测试1:
创建了继承自Actor的类,Spawn后没有rootcomponent,没有transform信息。
测试2:
发现rootcomponent为空。
CreateDefaultSubobject<USceneComponent>是否管用。
失败,这个函数只能在构造函数里面调用。
注释:不想在构造函数里增加Component,因为我想动态增加component;
测试3:
RootComponent = NewObject<USceneComponent>();
AddInstanceComponent(RootComponent);
失败。
测试4:
ChildActorComponent = NewObject<UChildActorComponent>();
AddInstanceComponent(ChildActorComponent);
失败,连scenecomponent显示都没有了。
测试5:
DefaultRootComponent = NewObject<USceneComponent>();
AddInstanceComponent(DefaultRootComponent);
失败,同上。
测试6:
DefaultRootComponent = Cast<USceneComponent>( AddComponent("Root", true, FTransform(), NewObject<USceneComponent>()));
SetRootComponent(DefaultRootComponent);
失败,同上。
测试7:
尝试在构造函数里面添加ROOT,然后在其他函数里面Attach到root上面。
RootComponent= CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
继承自Actor的rootcomponent可以显示,但是不能更改里面数值。尝试使用自己的变量:
定义:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AItemInScene")
USceneComponent* DefaultRootComponent;
构造函数:
DefaultRootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
SetRootComponent(DefaultRootComponent);
可以显示Root了,也能更改数值。
测试8:
尝试在root上增加component:
ChildActorComponent = NewObject<UChildActorComponent>();
ChildActorComponent->AttachTo(DefaultRootComponent);
失败,root下什么也没显示。
测试9:
是否是要AddComponent()
ChildActorComponent = NewObject<UChildActorComponent>();
AddInstanceComponent(ChildActorComponent);
失败,root下什么也没显示。
测试10:
ChildActorComponent = NewObject<UChildActorComponent>(this, "name", RF_NoFlags, nullptr, false, nullptr);
ChildActorComponent->AttachTo(DefaultRootComponent, "name", EAttachLocation::KeepRelativeOffset, false);
成功,我想应该是创建时候NewObject的参数问题。汗。。
测试11:
DefaultRootComponent = NewObject<USceneComponent>(this, "root", RF_NoFlags, nullptr, false, nullptr);
ChildActorComponent = NewObject<UChildActorComponent>(this, "name", RF_NoFlags, nullptr, false, nullptr);
ChildActorComponent->AttachTo(DefaultRootComponent, "name", EAttachLocation::KeepRelativeOffset, false);
成功。但是组件里面的参数不能改,而且没有在Actor显示出来,汗。。。
测试12:
DefaultRootComponent = NewObject<USceneComponent>(this, "root", RF_NoFlags, nullptr, false, nullptr);
ChildActorComponent = NewObject<UChildActorComponent>(this, "name", RF_NoFlags, nullptr, false, nullptr);
AddInstanceComponent(DefaultRootComponent);
AddInstanceComponent(ChildActorComponent);
成功,解决所有问题。
最后说一句,
StaticMeshComponent要想在世界中显示,要RegisterComponent
StaticMeshComponent->RegisterComponent();
- 虚幻4:C++ Actor增加Component
- 虚幻4 Actor创建组件总结
- Unreal 给Actor添加Component
- 虚幻4 删除Actor渲染线程和主线程的过程
- c++actor模型库Theron
- Actor
- Actor
- Actor
- Actor
- 虚幻4引擎
- 虚幻4引擎
- 虚幻4的Style
- 虚幻4 Editor 编程
- 虚幻4 蒙太奇
- 虚幻4编码规范
- 虚幻4目录结构
- 虚幻4 反射
- 虚幻4 材质基础
- 枚举与泛型
- android RTC
- 如何学习程序
- 如何选择开源许可证?
- hdu 5291 Candy Distribution 2015 Multi-University Training Contest 1
- 虚幻4:C++ Actor增加Component
- 对机房收费的认识(修正)
- <Unity3D>NGUI之HUDText的灵活使用
- Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
- uva 10803 Thunder Mountain (floyd)
- 图像处理------基于像素的图像混合
- EventBus组件间通讯利器【入门篇】
- hammer.js实现背景图手势缩放调整位置
- 浅谈java内存中的堆和栈