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
Category
Position:
Main
Type:
flag
UENUM(Category)
Bitflags
Position:
Meta
Type:
flag
UENUM(meta=(Bitflags))
Use Enum Values As Mask Values In Editor
Position:
Meta
Type:
bool
UENUM(meta=(UseEnumValuesAsMaskValuesInEditor=true))
Experimental
Position:
Meta
Type:
flag
UENUM(meta=(Experimental))
As far as I can tell, this doesn't affect functionality in any way, it's more as "user documentation".
Script Name
Position:
Main
Type:
flag
UENUM(ScriptName)
Tool Tip
Position:
Main
Type:
flag
UENUM(ToolTip)
Blueprint Type
Position:
Main
Type:
flag
UENUM(BlueprintType)
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
Display Name
Position:
Main
Type:
string
UMETA(DisplayName="abc")
UENUM(BlueprintType)
enum class UMetaExample : uint8
{
Cat UMETA(DisplayName="Kitty"),
Dog,
Rooster,
};
Hidden
Position:
Main
Type:
flag
UMETA(Hidden)
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),
};
Tool Tip
Position:
Main
Type:
string
UMETA(ToolTip="abc")
UENUM(BlueprintType)
enum class UMetaExample : uint8
{
Cat,
Dog,
Rooster UMETA(ToolTip="It's like a chicken"),
Count,
};
Row Type
Position:
Main
Type:
string
UMETA(RowType="abc")
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;