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
Blueprint Type
Position:
Main
Type:
flag
UINTERFACE(BlueprintType)
Whether this is set or not does not affect if the interface can be implemented by a Blueprint class.
Exposes this class as a type that can be used for variables in Blueprints.
Depends On
Position:
Main
Type:
string
UINTERFACE(DependsOn="abc")
Seems deprecated?
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.
Minimal Api
Position:
Main
Type:
flag
UINTERFACE(MinimalApi)
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.
Category
Position:
Main
Type:
string
UINTERFACE(Category="abc")
Cannot Implement Interface In Blueprint
Position:
Meta
Type:
flag
UINTERFACE(meta=(CannotImplementInterfaceInBlueprint))
By default all UINTERFACE
s are implementable in Blueprints. This tag changes that behavior. You may want to set this on interfaces that are for low-level C++ classes only, to clean up the interface drop-down box in Blueprints.
Display Name
Position:
Meta
Type:
string
UINTERFACE(meta=(DisplayName="abc"))
Experimental
Position:
Main
Type:
flag
UINTERFACE(Experimental)