Thanks to TheAxcell’s code above, I can improve the code to get enum value by name.
At first, create your own enum like this:
-------------------code start-------------------------------
UENUM(BlueprintType)
enum class EAnimState : uint8
{
Default,
Idle,
Jump,
};
-------------------code end-----------------------------------
Then, parse string to your enum type anywhere you want:
-------------------code start-------------------------------
const UEnum* AnimStateEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT(“EAnimState”), true);
if (AnimStateEnum) {
int32 Index = AnimStateEnum->GetIndexByName(AnimStateName);
EAnimState AnimState = EAnimState((uint8)Index);
return AnimState;
}
-------------------code end----------------------------------
Note:
- If Index is out of range, first element in EAnimState will be returned, so, keep your default enum value in the first place.
- This works in Unreal Engine version 4.17.X.