UE5 C++ 两种枚举

由于c++11新增了强枚举,因此UE5中枚举分为经典枚举和强枚举两种写法

经典枚举

定义

cpp 复制代码
UENUM()
namespace EAutoReceiveInput
{
	enum Type //这里就是普通的c++枚举
	{
		Disabled,
		Player0,
		Player1,
		Player2,
		Player3,
		Player4,
		Player5,
		Player6,
		Player7,
	};
}

声明变量

cpp 复制代码
	UPROPERTY(EditAnywhere)
	TEnumAsByte<EAutoReceiveInput::Type> AutoPossessPlayer;//必须用TEnumAsByte声明,这个一个包装器,将枚举转化为8字节整数,因为蓝图无法处理枚举类型,只能处理数字,注意<>里是命名空间和枚举类型

调用

cpp 复制代码
AutoPossessPlayer = EAutoReceiveInput::Player0;//等号左边是包装器,右边直接用命名空间调用枚举值,注意命名空间后没有跟枚举类型

enum class 强枚举

定义

cpp 复制代码
UENUM(BlueprintType)//必须写上BlueprintType,这是固定写法,告诉编译器这个枚举可以在蓝图使用
enum class EMyState : uint8 //强枚举需要加上class关键字, uint8是指定数据结构,经典枚举和强枚举默认是都int,但强枚举可以手动指定为uint8,只占1个字节,UE也推荐写为uint8
{
    Idle,
    Walk,
    Run
};

声明变量

cpp 复制代码
UPROPERTY(EditAnywhere)
EMyState CurrentState;

调用

cpp 复制代码
CurrentState = EMyState::Idle;//直接用枚举名::枚举值
相关推荐
黄小白的进阶之路12 小时前
C++提高编程---3.9 STL-常用容器-map/multimap 容器【P231~P235】
c++
WBluuue12 小时前
Codeforces 1096 Div3(ABCDEFGH)
c++·算法
誰能久伴不乏12 小时前
ibmodbus “Invalid argument“ 错误的排查与修复
c++·qt·modbus
basketball61612 小时前
Kadane算法 C++实现
java·c++·算法
handler0112 小时前
【C++】二叉搜索树详解及其模拟实现(代码)
开发语言·c++·算法·c··二叉搜索树·搜索树
luj_176812 小时前
残熵算法的稳健防灾逻辑
c语言·开发语言·c++·经验分享·算法
玖釉-12 小时前
二叉树基础详解:TreeNode、buildTree、deleteTree 与 printTree 的实现原理(C++)
c++·windows·算法
QiLinkOS12 小时前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
一只鹿鹿鹿12 小时前
信息化项目管理规范(参考Word文件)
java·大数据·运维·开发语言·数据库
XGeFei12 小时前
python中子线程与主线程的关系
开发语言·python