十一、藍(lán)圖與C++:添加組件
一.藍(lán)圖中為藍(lán)圖類添加組件
創(chuàng)建一個(gè)藍(lán)圖類:BP_AddComponent,添加三個(gè)靜態(tài)網(wǎng)格體(StaticMesh),他們的父子關(guān)系是cube>sphere>cone

二.如何在C++中找到組件類型是什么?
鼠標(biāo)右鍵點(diǎn)擊組件,在組件前面加“U”




碰撞盒子組件:UBoxComponent
三.C++中實(shí)現(xiàn)BP_AddComponent過程
1.創(chuàng)建一個(gè)基于Actor的C++類:Cpp_AddComponent

2.在C++中定義組件

基于Cpp_AddComponent這個(gè)C++類創(chuàng)建一個(gè)藍(lán)圖類


3.在構(gòu)造函數(shù)中實(shí)例化上述三個(gè)靜態(tài)網(wǎng)格體組件


4.為三個(gè)靜態(tài)網(wǎng)格體組件設(shè)置父子關(guān)系
默認(rèn)的根組件是一個(gè)Scene組件;



5.為靜態(tài)網(wǎng)格體組件添加靜態(tài)網(wǎng)格資源

①手動(dòng)添加

②C++添加



解析:
①ConstructorHelpers:
構(gòu)造函數(shù)助手,該函數(shù)用于在構(gòu)造函數(shù)中加載對(duì)象(Object)資源或者類(Class)資源.
加載對(duì)象用法:ConstructorHelpers::FObjectFinder<資源類型>自己命名的資源名(資源引用/路徑);
只能在構(gòu)造函數(shù)中使用!!!!!!!!!!!!!!!!!
②資源類型獲取方式:
方式與獲取組件類型相似,在資源上右鍵,可以看到打開xxx.h,xxx就是類型,同樣需要加“U”


③資源引用獲取方式:

/Script/Engine.StaticMesh'/Game/Mesh/Cube.Cube'
我們只需要‘’里面的內(nèi)容:/Game/Mesh/Cube.Cube
ConstructorHelpers::FObjectFinder<UStaticMesh>CubeMeshFile(TEXT("/Game/Mesh/Cube.Cube"));
6.設(shè)置靜態(tài)網(wǎng)格物體的位置


7.為模型添加材質(zhì)



四.完整代碼
.h文件
.cpp文件
五.總結(jié)
1.組件都是U開頭,UxxxComponent類型
2.創(chuàng)建組件使用CreateDefaultSubobject.語法:
3.組件指針=CreateDefaultSubobject<UxxxComponent>(TEXT("組件名"));
4..組件使用SetupAttachment函數(shù)實(shí)現(xiàn)創(chuàng)建子父級(jí)關(guān)系
5.ConstructorsHelpers(構(gòu)造函數(shù)助手)用于在構(gòu)造函數(shù)中加載資源對(duì)象,
(1)語法:ConstructorHelpers::FObjectFinder<UXXX(類型)>資源名(TEXT("引用"));
(2)資源名.Successed()用來判斷加載結(jié)果
(3)資源名.Object用于獲取加載成功的資源對(duì)象
(4)只能在構(gòu)造函數(shù)中使用!!!?