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 as someBool="true". Again, for readability I would recommend using quotation marks only around string-type properties.

Blueprint

UINTERFACE(

BlueprintType

)
Position:

Main

Type:

flag

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.

Unreal Documentation
UINTERFACE(

DependsOn

="abc")
Position:

Main

Type:

string

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 separate DependsOn 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.

Unreal Documentation
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.

Unreal Documentation
UINTERFACE(

Category

="abc")
Position:

Main

Type:

string

UINTERFACE(meta=(

CannotImplementInterfaceInBlueprint

))
Position:

Meta

Type:

flag

By default all UINTERFACEs 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.

UINTERFACE(meta=(

DisplayName

="abc"))
Position:

Meta

Type:

string

UINTERFACE(

Experimental

)
Position:

Main

Type:

flag