news 2026/2/3 0:31:15

游戏开发中 C++ 枚举的正确用法:必须用 `enum class`

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
游戏开发中 C++ 枚举的正确用法:必须用 `enum class`

在 Unreal Engine 或其他 C++ 游戏项目中,枚举常用于表示角色状态、技能类型、网络状态等。必须使用enum class,原因如下:

1. 避免命名冲突(关键!)

游戏系统多,不同模块可能定义相同名称的状态:

// ❌ 传统 enum:编译失败enumPlayerState{Idle,Attack};enumAIState{Idle,Patrol};// 错误:Idle 重定义// ✅ enum class:安全隔离enumclassEPlayerState{Idle,Attack};enumclassEAIState{Idle,Patrol};// 合法EPlayerState player=EPlayerState::Idle;EAIState ai=EAIState::Idle;// 无歧义

2. 类型安全,防止逻辑错误

游戏逻辑依赖状态判断,隐式转换易引发 bug:

enumclassEGameState{Paused=0,Running=1,GameOver=2};voidUpdate(){if(CurrentState==EGameState::GameOver){ShowGameOverUI();}// 不会因意外将状态当作数字运算(如 CurrentState + 1)}

3. 内存优化(对性能敏感)

游戏对象数量庞大,节省每个字节都很重要:

// 默认底层类型为 int(4 字节)// 显式指定为 uint8_t(1 字节),适合同步和存储UENUM(BlueprintType)enumclassECharacterAnim:uint8_t{WalkUMETA(DisplayName="Walking"),RunUMETA(DisplayName="Running"),JumpUMETA(DisplayName="Jumping")};

注:UENUMUMETA是 Unreal Engine 的反射宏,用于蓝图暴露。

4. 转换规则

  • 不能隐式转为整数
  • 如需获取数值(如存档、网络包),必须显式转换:
uint8 StateByte=static_cast<uint8>(CurrentState);

结论

在游戏开发中:

  • 永远不要用enum
  • 始终使用enum class
  • 指定底层类型(如: uint8_t)以节省内存。
  • 通过static_cast显式转换,确保意图明确。

这是保证代码健壮性、可维护性和性能的基础实践。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/31 14:56:28

企业级文理医院预约挂号系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着医疗行业的快速发展&#xff0c;信息化管理已成为提升医院服务效率和质量的重要手段。传统的医院挂号方式存在排队时间长、信息不透明、资源分配不均等问题&#xff0c;亟需通过数字化手段优化流程。企业级文理医院预约挂号系统旨在解决这些问题&#xff0c;为患者提供…

作者头像 李华
网站建设 2026/2/3 14:25:38

DASD-4B-Thinking科研辅助:用Long-CoT能力加速文献综述逻辑链构建教程

DASD-4B-Thinking科研辅助&#xff1a;用Long-CoT能力加速文献综述逻辑链构建教程 1. 引言&#xff1a;科研工作者的新助手 科研文献综述是每个研究者必经的挑战。面对海量论文&#xff0c;如何快速梳理逻辑链条、建立知识体系&#xff1f;传统方法需要耗费大量时间阅读和整理…

作者头像 李华
网站建设 2026/2/3 6:52:55

告别人工评阅!WPS多维表构建英语作文AI智能评分平台

一、背景介绍当前&#xff0c;英语考试已经采用标准化阅卷&#xff0c;但是作文批改一直是人工评阅&#xff0c;速度慢、效率低&#xff0c;而且容易出现误差。WPS多维表近期上线【智能提取】和【DeepSeek深度思考】功能&#xff0c;可以轻松把上传图片的内容精准提取出来&…

作者头像 李华
网站建设 2026/2/3 3:27:15

8051单片机数码管动态显示proteus仿真快速理解

以下是对您提供的博文内容进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹&#xff0c;采用真实嵌入式工程师口吻撰写&#xff0c;语言自然、逻辑严密、教学性强&#xff0c;兼顾初学者理解力与工程师实战参考价值。文中所有技术细节均严格基于8051硬…

作者头像 李华
网站建设 2026/2/3 10:16:49

Hunyuan-MT-7B-WEBUI功能测评:支持38语种真香

Hunyuan-MT-7B-WEBUI功能测评&#xff1a;支持38语种真香 你有没有遇到过这样的场景&#xff1a; 一份维吾尔语政策文件急需转成中文上报&#xff0c;但在线翻译工具翻得生硬拗口&#xff1b; 跨境电商客服要同时处理西班牙语、葡萄牙语、阿拉伯语的咨询&#xff0c;人工翻译响…

作者头像 李华
网站建设 2026/2/3 16:34:10

ChatTTS轻量化部署:低资源环境下流畅运行技巧

ChatTTS轻量化部署&#xff1a;低资源环境下流畅运行技巧 1. 为什么轻量化部署对ChatTTS特别重要 ChatTTS确实惊艳——它能让文字“活”起来&#xff1a;一个自然的换气声、一段恰到好处的停顿、甚至一句即兴的“哈哈哈”&#xff0c;都让合成语音脱离了机械朗读的刻板印象。…

作者头像 李华