UE C++基础 | UENUM枚举

文章介绍了UEC++中UENUM用于声明枚举类型,以及如何使用UMETA改变编辑器显示名称。枚举的遍历方法包括ENUM_RANGE_BY_COUNT通过计数的最终值,ENUM_RANGE_BY_FIRST_AND_LAST按第一个和最后一个值,以及ENUM_RANGE_BY_VALUES按值顺序。此外,还展示了枚举转字符串的方法,通过StaticEnum获取枚举值的字符串表示。

UE C++基础 | UENUM枚举

声明方式

UENUM(BlueprintType)
enum class EFood : uint8
{
	EApple,
	EBanana,
	EOrange
};

UMATA 标记

  • 当使用UMETA更改编辑器中显示的枚举名字。
UENUM(BlueprintType)
enum class EFood : uint8
{
	EApple		UMETA(DisplayName = "Apple"),
	EBanana		UMETA(DisplayName = "Banana"),
	EOrange		UMETA(DisplayName = "Orange")
};

枚举的遍历

枚举计数宏

ENUM_RANGE_BY_COUNT(使用计数的最终值)(最常用的方式)
#include "Misc/EnumRange.h"

UENUM()
enum class EFood : uint8
{
	EApple		UMETA(DisplayName = "Apple"),
	EBanana		UMETA(DisplayName = "Banana"),
	EOrange		UMETA(DisplayName = "Orange")
    ECount      UMATA(Hidden)
};

ENUM_RANGE_BY_COUNT(EFood, EFood::ECount);
ENUM_RANGE_BY_FIRST_AND_LAST(按第一个和最后一个)
#include "Misc/EnumRange.h"

UENUM()
enum class EFood : uint8
{
	EApple		UMETA(DisplayName = "Apple"),
	EBanana		UMETA(DisplayName = "Banana"),
	EOrange		UMETA(DisplayName = "Orange")
};

ENUM_RANGE_BY_FIRST_AND_LAST(EFood, EFood::EApple, EFood::EOrange)
ENUM_RANGE_BY_COUNT(按值顺序)
#include "Misc/EnumRange.h"

enum class ERandomValues : uint8
{
First = 2,
Second = 3,
Third = 5,
Fourth = 7,
Fifth = 11
};

ENUM_RANGE_BY_VALUES(ERandomValues, ERandomValues::First, ERandomValues::Second, ERandomValues::Third, ERandomValues::Fourth, ERandomValues::Fifth)

遍历方式

for (EFood Food : TEnumRange<EFood>())
{

}

枚举转字符串

  • 通过StaticEnum。
FString Name = StaticEnum<EFood>()->GetNameStringByValue(static_cast<__underlying_type(EFood)>(EFood::EBanana));
  • 可以对其封装。
template<typename T>
FString EnumToString(const T EnumValue)
{
	FString Name = StaticEnum<T>()->GetNameStringByValue(static_cast<__underlying_type(T)>(EnumValue));
	check(Name.Len() != 0);
	return Name;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Flame老唐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值