虚幻引擎(UE4) 枚举(ENUM)的定义方法和需要注意的坑。

举报
Dummy 发表于 2021/11/19 01:11:36 2021/11/19
【摘要】   在C++中定义枚举:需要注意的是c++ 11增加了enum class类型,这和之前的enum类型有点差别。 只供C++使用: UENUM()enum Type{ Top_Left, Top_Center, Top_Right, Center_Left, Center_Center, Center_Right, Bot...

 

在C++中定义枚举:需要注意的是c++ 11增加了enum class类型,这和之前的enum类型有点差别。

  • 只供C++使用:
  • 
        
    1. UENUM()
    2. enum Type
    3. {
    4. Top_Left,
    5. Top_Center,
    6. Top_Right,
    7. Center_Left,
    8. Center_Center,
    9. Center_Right,
    10. Bottom_Left,
    11. Bottom_Center,
    12. Bottom_Right,
    13. Custom
    14. };

  
  1. UENUM()
  2. namespace ESpritePivotMode
  3. {
  4. enum Type
  5. {
  6. Top_Left,
  7. Top_Center,
  8. Top_Right,
  9. Center_Left,
  10. Center_Center,
  11. Center_Right,
  12. Bottom_Left,
  13. Bottom_Center,
  14. Bottom_Right,
  15. Custom
  16. };
  17. }
  •  如果要在蓝图中使用枚举:

  
  1. #pragma once
  2. UENUM(BlueprintType)
  3. enum class EUI_Zorder : uint8
  4. {
  5. None = 0,
  6. Base = 10 UMETA(DisplayName = "Base"),
  7. UI = 20 UMETA(DisplayName = "UI"),
  8. Pop = 30 UMETA(DisplayName = "Pop"),
  9. Animation = 40 UMETA(DisplayName = "Animation"),
  10. System = 50 UMETA(DisplayName = "System"),
  11. };

UMETA关键字用于修饰枚举值(Display 表示显示描述)

必须要:

  • 加上UENUM(BlueprintType)。

  • 继承自uint8,目前UE4.25只支持uint8(unsigned char),这意味着枚举的值不能超过uint8的范围及(0-255),个人认为这可能是处于对引擎的优化考虑。

  • 必须要有一个枚举值为0。

蓝图中调用:需要将返回值转换为相应的类型如int

文章来源: blog.csdn.net,作者:呦呦鹿鸣.,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/zhang1461376499/article/details/113790119

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。