UEC++枚举转换字符串
在 UEC++ 中如何将一个枚举类型转换成字符串类型
在虚幻引擎(Unreal Engine)中,可以通过几种方式将一个枚举类型转换成字符串。这里是一些常见的方法:
方法 1: 使用 UEnum
的 GetNameStringByIndex
函数
假设你有一个枚举类型如下:
UENUM(BlueprintType)
enum class EMyEnum : uint8
{
ValueOne,
ValueTwo,
ValueThree
};
你可以使用 UEnum
类的静态方法 GetNameStringByIndex
来获得枚举值的字符串表示:
#include "YourEnumHeader.h"
#include "UObject/EnumProperty.h"
FString EnumToString(EMyEnum EnumValue)
{
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("EMyEnum"), true);
if (!EnumPtr) return FString("Invalid");
return EnumPtr->GetNameStringByIndex(static_cast<int32>(EnumValue));
}
方法 2: 使用 GetEnumValueAsString
函数
如果你更喜欢直接使用带有命名空间的StaticEnum
函数来获取枚举的字符串表示:
#include "YourEnumHeader.h"
FString EnumToString(EMyEnum EnumValue)
{
const UEnum* EnumPtr = StaticEnum<EMyEnum>();
if (!EnumPtr) return FString("Invalid");
return EnumPtr->GetNameStringByValue(static_cast<int64>(EnumValue));
}
方法 3: 在蓝图中进行转换
如果你更喜欢在蓝图中进行操作,可以创建一个蓝图函数库(Blueprint Function Library)来实现这个功能。
创建一个新的 C++ 类,继承自 UBlueprintFunctionLibrary
。
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "YourEnumHeader.h"
#include "YourBlueprintFunctionLibrary.generated.h"
UCLASS()
class YOURPROJECT_API UYourBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "Utilities")
static FString EnumToString(EMyEnum EnumValue);
};
在 .cpp
文件中实现该函数:
#include "YourBlueprintFunctionLibrary.h"
FString UYourBlueprintFunctionLibrary::EnumToString(EMyEnum EnumValue)
{
const UEnum* EnumPtr = StaticEnum<EMyEnum>();
if (!EnumPtr) return FString("Invalid");
return EnumPtr->GetNameStringByValue(static_cast<int64>(EnumValue));
}
编译项目后,在蓝图中调用这个静态函数即可将枚举转换为字符串。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律