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

本文介绍了C++11中新增的enumclass类型与传统的enum类型的差异,并展示了如何在C++代码中定义枚举。同时,详细说明了在蓝图中使用枚举的注意事项,包括需要添加UENUM(BlueprintType)、继承自uint8以及确保存在枚举值为0等要求。还提到了UMETA关键字用于添加显示描述,并指出蓝图中调用枚举值时需要进行类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

  • 只供C++使用:
  • UENUM()
    enum Type
    {
    	Top_Left,
    	Top_Center,
    	Top_Right,
    	Center_Left,
    	Center_Center,
    	Center_Right,
    	Bottom_Left,
    	Bottom_Center,
    	Bottom_Right,
    	Custom
    };
UENUM()
namespace ESpritePivotMode
{
	enum Type
	{
		Top_Left,
		Top_Center,
		Top_Right,
		Center_Left,
		Center_Center,
		Center_Right,
		Bottom_Left,
		Bottom_Center,
		Bottom_Right,
		Custom
	};
}
  •  如果要在蓝图中使用枚举:
#pragma once

UENUM(BlueprintType)
enum class EUI_Zorder : uint8
{
	None = 0,
	Base = 10 UMETA(DisplayName = "Base"),
	UI = 20 UMETA(DisplayName = "UI"),
	Pop = 30 UMETA(DisplayName = "Pop"),
	Animation = 40 UMETA(DisplayName = "Animation"),
	System = 50 UMETA(DisplayName = "System"),
};

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

必须要:

  • 加上UENUM(BlueprintType)。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呦呦鹿鸣.

你的打赏是给予我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值