news 2026/4/23 19:49:45

游戏开发中 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/4/23 9:45:50

QWEN-AUDIO惊艳效果展示:四音色+六情感+双语混合语音合集

QWEN-AUDIO惊艳效果展示&#xff1a;四音色六情感双语混合语音合集 1. 这不是“读出来”&#xff0c;是“活过来”的声音 你有没有听过一段AI语音&#xff0c;第一反应不是“这声音挺像真人”&#xff0c;而是下意识想回头看看是谁在说话&#xff1f; QWEN-AUDIO 就是这样一种…

作者头像 李华
网站建设 2026/4/23 9:45:32

EagleEye实战案例:零售门店人流统计中毫秒级目标检测落地解析

EagleEye实战案例&#xff1a;零售门店人流统计中毫秒级目标检测落地解析 1. 为什么零售门店需要“看得快、看得准”的人流量系统 你有没有注意过&#xff0c;一家新开的奶茶店门口总有人驻足观望&#xff0c;但真正进店的不到三成&#xff1f;或者某家连锁便利店在下午三点客…

作者头像 李华
网站建设 2026/4/23 5:35:51

隐私合规怎么做?Qwen3Guard-Gen-WEB日志脱敏实战

隐私合规怎么做&#xff1f;Qwen3Guard-Gen-WEB日志脱敏实战 在AI应用快速落地的今天&#xff0c;企业每天都在处理海量用户输入、对话记录、生成内容和系统日志。这些数据中往往隐含真实姓名、手机号、身份证号、地址、邮箱、设备ID等敏感信息——一旦未经处理直接留存、分析…

作者头像 李华
网站建设 2026/4/23 11:13:25

PasteMD生产部署:Nginx反向代理+HTTPS+Basic Auth的企业级安全接入方案

PasteMD生产部署&#xff1a;Nginx反向代理HTTPSBasic Auth的企业级安全接入方案 1. 项目概述 PasteMD是一款基于Ollama本地大模型框架的智能文本格式化工具&#xff0c;专为解决日常工作中杂乱文本的结构化问题而设计。它搭载了强大的llama3:8b模型&#xff0c;能够将会议纪…

作者头像 李华
网站建设 2026/4/23 1:17:49

Unsloth在教育场景的应用:AI解题模型落地

Unsloth在教育场景的应用&#xff1a;AI解题模型落地 教育正经历一场静默却深刻的变革——当学生卡在一道数学题前反复演算&#xff0c;当老师批改上百份作业耗尽心力&#xff0c;当个性化辅导因师资限制难以覆盖每个孩子&#xff0c;AI解题能力不再是科幻概念&#xff0c;而成…

作者头像 李华
网站建设 2026/4/23 12:54:23

学生党福音:GLM-4.6V-Flash-WEB实现数学题智能答疑

学生党福音&#xff1a;GLM-4.6V-Flash-WEB实现数学题智能答疑 你有没有过这样的经历&#xff1a;深夜刷题&#xff0c;卡在一道函数图像题上&#xff0c;草稿纸写满却理不清思路&#xff1b;拍下习题册里的几何图&#xff0c;想立刻知道辅助线怎么添&#xff1b;对着一张密密…

作者头像 李华