UE4中的枚举型和蓝图中的结构体有什么作用?
6月 8, 2021 2021-06-08 9:31UE4中的枚举型和蓝图中的结构体有什么作用?
枚举是一种独立的变量类型,每一【个】枚举都是一种变量类型。对比int型,里面的数据有0,1,2,3,4,5……,你声明一个int型变量叫[攻击次数],那么这个[攻击次数]的取值就只能是这些整数型的某一个值。当然你再声明个变量叫[防御次数]或[死亡次数],它们本质上都还是int型变量。而枚举,是动不动就开一种新的变量类型,例如你先构造一个枚举叫“星期”,然后你就要给这个星期的取值范围进行说明,里面有星期一、星期二、星期三……这样,“星期”就成了一种变量类型。这时候你就可以用声明一个“星期”类型的变量叫[今天星期几],这跟[攻击次数]是对应的关系。而且你还可以反复利用这个“星期”型声明其它变量,例如[大后天星期几],[上次角色死亡星期几],这几个变量的取值当然都是在星期一、星期二、星期三……这个范围里的。所以枚举型本身比整型高一个层级,你既可以声明“星期”这个枚举,也可以声明“季节”这样的枚举,但总之这玩意是为变量类型服务的。
而结构体,它可不是什么变量类型。它主要描述了一份一份的数据,每一份数据到底包含啥格式。例如你构造一个结构体,它自己的名字叫人物信息,那么里面就要描述这个结构下你都要把哪些数据放进这个结构里。名字(string),年龄(int),身高(float),星座(enum)等等……它规定了这里面每一份都必须是这样的结构,而不是说规定每一份都能取什么样的值,光是名字这一项就可以千奇百怪根本不胜枚举。我这例子里特意加了个星座,它就是个枚举,一般来说它的取值也就那12个,最多加个蛇夫。这就是人物信息的结构体里,套了一个星座类型的枚举。
当你用变量指向一个结构体的时候,它一般都会包含多个数据(只包含一个数据理论上可以,但属于脱裤子放屁),至于里面每一项数据都是啥格式,得看结构体定义的时候具体指定了是啥格式。所以声明结构体的时候一定会要求你定数据格式,而枚举则没这个事。当你用变量指向一个枚举的时候,这个变量就是这个枚举类型的,它的取值范围被严格约束,就是在声明枚举时写的那些,至于每一项具体写啥,爱写啥写啥,写的人自己明白就行,它们整体构成一个变量类型,它们的抽象意义由写代码的人自行决定。