Note: This page is still a work in progress. There are a lot of meta specifiers still to document!
Unreal's Enum Specifiers page lists all of the core specifiers and many of the metadata specifiers, but it is not an exhaustive list.
This page attempts to be an exhaustive list of all the UENUM
specifiers,
giving explanations, sample code, screenshots and related links for each.
If you know of any not listed here, or see any mistakes, feel free to contact me.
Special thanks to Erekose Craft, Ben Fox, Aquanox, ATankNoMore for finding meta properties, giving feedback and giving great examples of usage.
The YAML files used to generate this documentation are available on GitHub. Feel free to submit pull requests or submit any incorrect or missing information there.
General Points
- Tags are case insensitive, but I would recommend sticking to the case example here for readability.
- Quotation marks are optional if the values does not have spaces. e.g.
someBool=true
is treated the same assomeBool="true"
. Again, for readability I would recommend using quotation marks only around string-type properties.
UENUM
General
UENUM(
Category
)
Position:
Main
Type:
flag
UENUM(meta=(
Bitflags
))
Position:
Meta
Type:
flag
UENUM(meta=(
UseEnumValuesAsMaskValuesInEditor
=true))
Position:
Meta
Type:
bool
UENUM(meta=(
Experimental
))
Position:
Meta
Type:
flag
As far as I can tell, this doesn't affect functionality in any way, it's more as "user documentation".
UENUM(
ScriptName
)
Position:
Main
Type:
flag
UENUM(
ToolTip
)
Position:
Main
Type:
flag
UENUM(
BlueprintType
)
Position:
Main
Type:
flag
Exposes the UENUM to be used as a variable type in Blueprint scripts.
UMETA
- Technically all properties on UMETA properties are counted as MetaData, but
unlike others they do not have to be grouped into a
meta
category - It's possible to add and use your own tags to
UMETA
because they are counted as MetaData. Look howMovieSceneBuiltInEasingFunctionCustomization.cpp
usesUMETA(Grouping)
to group together enum values.
Display
UMETA(
DisplayName
="abc")
Position:
Main
Type:
string
UENUM(BlueprintType)
enum class UMetaExample : uint8
{
Cat UMETA(DisplayName="Kitty"),
Dog,
Rooster,
};
UMETA(
Hidden
)
Position:
Main
Type:
flag
This can be used in conjunction with ENUM_RANGE_BY_COUNT
to allow iteration over UENUM
.
It looks like "Spacer" used to be an alternative name for this.
UENUM(BlueprintType)
enum class UMetaExample : uint8
{
Cat,
Dog,
Rooster,
Count UMETA(Hidden),
};
UMETA(
ToolTip
="abc")
Position:
Main
Type:
string
UENUM(BlueprintType)
enum class UMetaExample : uint8
{
Cat,
Dog,
Rooster UMETA(ToolTip="It's like a chicken"),
Count,
};
UMETA(
RowType
="abc")
Position:
Main
Type:
string
Allows the editor drop-down of a FDataTableRowHandle
to only show data tables of a specific row type.
Currently undocumented but implemented in DataTableCustomization.cpp
.
USTRUCT(BlueprintType)
struct FMyStruct
{
...
};
UPROPERTY(EditAnywhere, meta = (RowType = "/Script/MyModule.MyStruct"))
FDataTableRowHandle RowHandleExample;