一. 原理
很简单的实现,使用Map进行映射,按键或按值寻找对应的数据。
二. 优缺点
1. 优点
2. 缺点
三. 代码
如题,实现代码
UENUM(BlueprintType)
enum class EEnum_FileExtension:uint8 {
unknown UMETA(DisplayName="unknown"),
bmp UMETA(DisplayName="bmp"),
jpg UMETA(DisplayName="jpg"),
jpeg UMETA(DisplayName="jpeg"),
png UMETA(DisplayName="png"),
};
UCLASS()
class UEnumFileExtensionString : public UObject {
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TMap<EEnum_FileExtension, FString> FileExtensions;
UEnumFileExtensionString() {
FileExtensions.Add(EEnum_FileExtension::unknown,TEXT("unknown"));
FileExtensions.Add(EEnum_FileExtension::bmp,TEXT("bmp"));
FileExtensions.Add(EEnum_FileExtension::jpg,TEXT("jpg"));
FileExtensions.Add(EEnum_FileExtension::jpeg,TEXT("jpeg"));
FileExtensions.Add(EEnum_FileExtension::png,TEXT("png"));
}
UFUNCTION(BlueprintCallable)
EEnum_FileExtension FindKey(const FString& Value) const {
const EEnum_FileExtension* E = FileExtensions.FindKey(Value);
return (E != nullptr) ? *E : EEnum_FileExtension::unknown;
}
UFUNCTION(BlueprintCallable)
FString FindValue(const EEnum_FileExtension& Key) const {
const FString* E = FileExtensions.Find(Key);
return (E != nullptr) ? *E : TEXT("unknown");
}
};
使用代码,简单做了一层封装
EEnum_FileExtension UPhBlueprintFunctionLibrary::FStringToEnumFileExtension(const FString& Extension) {
static const UEnumFileExtensionString* EnumFileExtensionString = NewObject<UEnumFileExtensionString>();
return EnumFileExtensionString->FindKey(Extension);
}
FString UPhBlueprintFunctionLibrary::EnumFileExtensionToFString(const EEnum_FileExtension& Extension) {
static const UEnumFileExtensionString* EnumFileExtensionString = NewObject<UEnumFileExtensionString>();
return EnumFileExtensionString->FindValue(Extension);
}
|