十、藍(lán)圖與C++:Enum枚舉
一.枚舉的理解
所謂枚舉是將一種類型中可能會出現(xiàn)的所有結(jié)果預(yù)先都一一列舉出來,分別以有意義的名稱(命名)來代表它們。
為了更好地理解枚舉,我們展示一下Excel中類似的功能:考勤狀態(tài),提前預(yù)想到的幾種考勤狀態(tài),都一一列舉出來了。

二.藍(lán)圖中的Enum枚舉
1.藍(lán)圖中創(chuàng)建枚舉:E_ScoreLevel

2.分別用ABCD來表示分?jǐn)?shù)的等級

3.藍(lán)圖中使用枚舉

①Switch

每一種結(jié)果/狀態(tài)都可以對應(yīng)一種邏輯

②判斷( = 或者!=)

并不是所有的結(jié)果/狀態(tài)都對應(yīng)一種邏輯

三.C++中的Enum枚舉
1.C++中枚舉的聲明、定義與初始化
①C++中聲明一個枚舉與藍(lán)圖對比
新建一個c++類:Cpp_E_ScoreLevel
.h文件聲明枚舉
解析:
(1)UENUM()宏是UE用來控制enum行為的宏,與UCLASS,USTRUCT作用是一樣的?
(2)UMETA()可以用來修飾變量
(3)枚舉值之間用","隔開;最后一個不需要","
(4)枚舉名稱后面的":uint8" 是為了限制枚舉類型占用的內(nèi)存數(shù)量,UE要求如果想要使枚舉類型在藍(lán)圖中使用,必須要限制所占內(nèi)存為一個uint8類型,也就是8bit,1字節(jié).不加會報(bào)下面錯誤.?暫時不需要深究,當(dāng)做固定格式寫就行?

②C++中枚舉的定義與初始化與藍(lán)圖枚舉對比



2.C++中枚舉Switch與判斷的用法
①Switch
switch只會執(zhí)行與傳入值相匹配的case事件(前提是case里面加break)?
語法
如下:
解析:
(1)每個case所在的花括號{ }中都要加上break;否則他會在執(zhí)行完自己所在的case后繼續(xù)向下執(zhí)行。

(2)default: 默認(rèn)case的意思,僅當(dāng)傳入的枚舉值找不到對應(yīng)的case時才會執(zhí)行default的邏輯

藍(lán)圖實(shí)現(xiàn)上述C++代碼塊


②判斷(if)
藍(lán)圖實(shí)現(xiàn)上述代碼塊


四.搞一個小案例方便理解
在第九章的Struct結(jié)構(gòu)體基礎(chǔ)上延伸,增加一條分?jǐn)?shù)等級的信息



①PersonInfoItem修改


②UI_PersonInfoList修改


