三、創(chuàng)建第一個(gè)C++ Actor類
“對(duì)照藍(lán)圖實(shí)現(xiàn)C++,更有利于學(xué)習(xí)喲”
一.創(chuàng)建一個(gè)Actor的藍(lán)圖類---BP_Actor




二.C++實(shí)現(xiàn)BP_Actor藍(lán)圖類的功能
1.創(chuàng)建一個(gè)c++類Cpp_Actor



創(chuàng)建類后,會(huì)打開IDE,跳到.cpp文件中

2.C++定義Float類型變量Money,對(duì)應(yīng)藍(lán)圖中變量Money

.h文件中
public是訪問修飾符,該修飾符下面定義的變量or函數(shù)的訪問權(quán)限為公開.除了public之外還有private(私有)和protected(保護(hù)).暫且先將變量和函數(shù)都聲明為public,后面在將這三種修飾符的區(qū)別和使用選擇.
類中可以有多個(gè)訪問修飾符,只要你想,可以加n個(gè)public.
類中有多個(gè)public的用途在于:可以將變量和函數(shù)的定義分開,比如訪問權(quán)限公開的變量放到一個(gè)public下,訪問權(quán)限公開的函數(shù)放到另一個(gè)public下,目的是為了容易閱讀
3.C++定義AddMoney函數(shù)及邏輯,對(duì)應(yīng)藍(lán)圖中AddMoney函數(shù)

.h文件聲明函數(shù)
函數(shù)聲明(.h中)的語法格式為:
返回值類型 函數(shù)名 (參數(shù)1類型 參數(shù)1名稱,參數(shù)2類型 參數(shù)2名稱,....);
以AddMoney為例:
這是一個(gè)返回值類型為float類型 ,函數(shù)名為AddMoney,參數(shù)類型為float,參數(shù)名為Moneyvalue的函數(shù)
函數(shù)的返回值和參數(shù)不是必須的,沒有返回值的話,返回值類型寫void,如:
void MyFunction();這就是一個(gè)沒有返回值,并且沒有傳入?yún)?shù)的函數(shù).?
.cpp文件定義函數(shù)
函數(shù)定義(.cpp)中的語法格式為:
返回值類型 類名::函數(shù)名 (參數(shù)1類型 參數(shù)1名稱,參數(shù)2類型 參數(shù)2名稱,....)
{
? ? ? ? 函數(shù)邏輯;
? ? ? ? //對(duì)于沒有返回值的函數(shù)(返回值為void),下面這個(gè)return 返回值可以不寫;
? ? ? ? return 返回值;
}?
4.C++實(shí)現(xiàn)在Tick事件中調(diào)用AddMoney函數(shù)及邏輯,對(duì)應(yīng)藍(lán)圖中事件

.cpp文件c++代碼對(duì)應(yīng)上面的藍(lán)圖tick事件
5.C++完整代碼如下
.h文件
.cpp文件
三.構(gòu)建并運(yùn)行C++代碼


構(gòu)建成功,運(yùn)行項(xiàng)目,等待編輯器的打開...

打開編輯器之后我們就能在C++Classes路徑下找到這個(gè)新建的c++類

將C++類拖入場景中并且運(yùn)行


至此C++已經(jīng)實(shí)現(xiàn)了藍(lán)圖功能

要點(diǎn)解析:
Cpp_Actor C++類的解析


①UCLASS宏:
該宏是UE4C++類的必要組成之一,主要用途在于修飾C++類,比如控制被其修飾的C++類能否在藍(lán)圖中可見,能否派生藍(lán)圖子類等
②C++繼承方式:
C++繼承父類的語法格式:class 類名: public 父類?
③GENERATED_BODY宏:目前無需深入理解.
④構(gòu)造函數(shù):
創(chuàng)建對(duì)象時(shí)必須執(zhí)行的函數(shù),與之對(duì)應(yīng)還有個(gè)析構(gòu)函數(shù).
⑤beginplay和tick函數(shù):?
C++中的Beginplay和Tick函數(shù)作用對(duì)應(yīng)藍(lán)圖中的Beginplay和Tick事件
要注意的是!!!僅僅是功能相同,并不代表藍(lán)圖中的Beginplay和Tick就是這兩個(gè)C++函數(shù)
⑥域解析符
::
被稱為域解析符(也稱作用域運(yùn)算符或作用域限定符),用來連接類名和函數(shù)名,指明當(dāng)前函數(shù)屬于哪個(gè)類。
成員函數(shù)聲明作用域語法:?
返回值 類名::函數(shù)名( 參數(shù)1,參數(shù)2...)
{
//TODO
}