UE4输出枚举变量的值名称

UE4输出枚举变量的值名称

背景

输出日志的时候总是只能输出具体的值,看日志的时候一脸懵逼,我到底输出的是啥,自己都不明白日志里面一堆值是什么意思,还得查代码看每个枚举的具体值,不想这样就得在输出的位置疯狂switch写日志,不用怕,UE4解放了你,UE4可以直接输出枚举的值的名称啦

实现

在VisualLoggerTypes中,有一个很好用的宏,可以直接把枚举的值转成名称的字符串。

#if ENABLE_VISUAL_LOG
#define DEFINE_ENUM_TO_STRING(EnumType) FString EnumToString(const EnumType Value) \
{ \
	static const UEnum* TypeEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT(#EnumType)); \
	return TypeEnum->GetNameStringByIndex(static_cast<int32>(Value)); \
}
#define DECLARE_ENUM_TO_STRING(EnumType) FString EnumToString(const EnumType Value)
#else
#define DEFINE_ENUM_TO_STRING(EnumType) 
#define DECLARE_ENUM_TO_STRING(EnumType)
#endif // ENABLE_VISUAL_LOG

我们先要#include “VisualLogger/VisualLoggerTypes.h”
然后调用宏定义一个DEFINE_ENUM_TO_STRING(YourUEnum);转换函数
然后在需要转换的地方调用函数EnumToString(YourUEnum::Value);

示例

 //产品型号
UENUM(BlueprintType)
enum class EColor : uint8
{
	Red=0,
	Green =1,
	Blue =2
};

DEFINE_ENUM_TO_STRING(EColor );
FString MyColor = EnumToString(EColor ::Red);

执行之后MyColor的值为TEXT(“Red”);

注意事项

这里可以实现这个功能的枚举一定是Unreal的UENUM,因为实际使用的是UE的特性实现的。另外如果不想这么复杂,也可以直接使用宏的展开,这样的结构也是一样的

	static const UEnum* TypeEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT("EColor ")); 
	FString MyColor = TypeEnum->GetNameStringByIndex(static_cast<int32>(EColor ::Red)); 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值