十一、蓝图与C++:添加组件
一.蓝图中为蓝图类添加组件
创建一个蓝图类:BP_AddComponent,添加三个静态网格体(StaticMesh),他们的父子关系是cube>sphere>cone

二.如何在C++中找到组件类型是什么?
鼠标右键点击组件,在组件前面加“U”




碰撞盒子组件:UBoxComponent
三.C++中实现BP_AddComponent过程
1.创建一个基于Actor的C++类:Cpp_AddComponent

2.在C++中定义组件

基于Cpp_AddComponent这个C++类创建一个蓝图类


3.在构造函数中实例化上述三个静态网格体组件


4.为三个静态网格体组件设置父子关系
默认的根组件是一个Scene组件;



5.为静态网格体组件添加静态网格资源

①手动添加

②C++添加



解析:
①ConstructorHelpers:
构造函数助手,该函数用于在构造函数中加载对象(Object)资源或者类(Class)资源.
加载对象用法:ConstructorHelpers::FObjectFinder<资源类型>自己命名的资源名(资源引用/路径);
只能在构造函数中使用!!!!!!!!!!!!!!!!!
②资源类型获取方式:
方式与获取组件类型相似,在资源上右键,可以看到打开xxx.h,xxx就是类型,同样需要加“U”


③资源引用获取方式:

/Script/Engine.StaticMesh'/Game/Mesh/Cube.Cube'
我们只需要‘’里面的内容:/Game/Mesh/Cube.Cube
ConstructorHelpers::FObjectFinder<UStaticMesh>CubeMeshFile(TEXT("/Game/Mesh/Cube.Cube"));
6.设置静态网格物体的位置


7.为模型添加材质



四.完整代码
.h文件
.cpp文件
五.总结
1.组件都是U开头,UxxxComponent类型
2.创建组件使用CreateDefaultSubobject.语法:
3.组件指针=CreateDefaultSubobject<UxxxComponent>(TEXT("组件名"));
4..组件使用SetupAttachment函数实现创建子父级关系
5.ConstructorsHelpers(构造函数助手)用于在构造函数中加载资源对象,
(1)语法:ConstructorHelpers::FObjectFinder<UXXX(类型)>资源名(TEXT("引用"));
(2)资源名.Successed()用来判断加载结果
(3)资源名.Object用于获取加载成功的资源对象
(4)只能在构造函数中使用!!!