UEC++枚举转换字符串

在 UEC++ 中如何将一个枚举类型转换成字符串类型

在虚幻引擎(Unreal Engine)中,可以通过几种方式将一个枚举类型转换成字符串。这里是一些常见的方法:

方法 1: 使用 UEnumGetNameStringByIndex 函数

假设你有一个枚举类型如下:

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));
}

编译项目后,在蓝图中调用这个静态函数即可将枚举转换为字符串。

posted @   Dream_moon  阅读(242)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示