十、蓝图与C++:Enum枚举
一.枚举的理解
所谓枚举是将一种类型中可能会出现的所有结果预先都一一列举出来,分别以有意义的名称(命名)来代表它们。
为了更好地理解枚举,我们展示一下Excel中类似的功能:考勤状态,提前预想到的几种考勤状态,都一一列举出来了。

二.蓝图中的Enum枚举
1.蓝图中创建枚举:E_ScoreLevel

2.分别用ABCD来表示分数的等级

3.蓝图中使用枚举

①Switch

每一种结果/状态都可以对应一种逻辑

②判断( = 或者!=)

并不是所有的结果/状态都对应一种逻辑

三.C++中的Enum枚举
1.C++中枚举的声明、定义与初始化
①C++中声明一个枚举与蓝图对比
新建一个c++类:Cpp_E_ScoreLevel
.h文件声明枚举
解析:
(1)UENUM()宏是UE用来控制enum行为的宏,与UCLASS,USTRUCT作用是一样的
(2)UMETA()可以用来修饰变量
(3)枚举值之间用","隔开;最后一个不需要","
(4)枚举名称后面的":uint8" 是为了限制枚举类型占用的内存数量,UE要求如果想要使枚举类型在蓝图中使用,必须要限制所占内存为一个uint8类型,也就是8bit,1字节.不加会报下面错误. 暂时不需要深究,当做固定格式写就行

②C++中枚举的定义与初始化与蓝图枚举对比



2.C++中枚举Switch与判断的用法
①Switch
switch只会执行与传入值相匹配的case事件(前提是case里面加break)
语法
如下:
解析:
(1)每个case所在的花括号{ }中都要加上break;否则他会在执行完自己所在的case后继续向下执行。

(2)default: 默认case的意思,仅当传入的枚举值找不到对应的case时才会执行default的逻辑

蓝图实现上述C++代码块


②判断(if)
蓝图实现上述代码块


四.搞一个小案例方便理解
在第九章的Struct结构体基础上延伸,增加一条分数等级的信息



①PersonInfoItem修改


②UI_PersonInfoList修改


