Create Blueprint Enum

Fill Enum with values

Create new C++ class
UCLASS()
class UClassName : public UUserWidget
{
GENERATED_BODY()
};
Create FName property and TArray<FName> property
UCLASS()
class UClassName : public UUserWidget
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "CategoryName")
TArray<FName> Categories;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "CategoryName", meta = (GetOptions = "Categories"))
FName Category;
};
Create constructor
UCLASS()
class UClassName : public UUserWidget
{
GENERATED_BODY()
UClassName();
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "CategoryName")
TArray<FName> Categories;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "CategoryName", meta = (GetOptions = "Categories"))
FName Category;
};
Fill constructor with load code
UClassName::UClassName()
{
FString EnumPath = TEXT("/SkillTree/Enums/E_SkillTree_Categories.E_SkillTree_Categories"); //
UEnum* LoadedEnum = Cast<UEnum>(StaticLoadObject(UEnum::StaticClass(), nullptr, *EnumPath));
if (LoadedEnum)
{
for(int32 i = 0; i < LoadedEnum->GetMaxEnumValue(); i++)
{
Categories.AddUnique(FName(*LoadedEnum->GetDisplayNameTextByIndex(i).ToString()));
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("Failed to load enum at path: %s"), *EnumPath);
}
}