Note: This page is still a work in progress. There are a lot of meta specifiers still to document!
Unreal's UINTERFACE 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 UINTERFACE
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.
Blueprint
UINTERFACE(
BlueprintType
)
Position:
Main
Type:
flag
Exposes this class as a type that can be used for variables in Blueprints.
UINTERFACE(
DependsOn
="abc")
Position:
Main
Type:
string
All classes listed will be compiled before this class. ClassName must specify a class in the same (or a previous) package. Multiple dependency classes can be specified using a single
DependsOn
line delimited by commas, or can be specified using a separateDependsOn
line for each class. This is important when a class uses a struct or enum declared in another class as the compiler only knows what is in the classes it has already compiled.
UINTERFACE(
MinimalApi
)
Position:
Main
Type:
flag
Causes only the class's type information to be exported for use by other modules. The class can be cast to, but the functions of the class cannot be called (with the exception of inline methods). This improves compile times by not exporting everything for classes that do not need all of their functions accessible in other modules.
UINTERFACE(
Category
="abc")
Position:
Main
Type:
string
UINTERFACE(meta=(
CannotImplementInterfaceInBlueprint
))
Position:
Meta
Type:
flag
UINTERFACE(meta=(
DisplayName
="abc"))
Position:
Meta
Type:
string
UINTERFACE(
Experimental
)
Position:
Main
Type:
flag