General tips

  • To select actors with a specific interface, use meta=(MustImplement="/Script/ModuleName.MyInterface") (No U or I prefix for the interface). Pre-UE5 this worked with a classname like MyInterface, and didn’t need the module path.
  • To have an interface selector, use meta=(AllowAbstract) with a TSubclassOf<UInterface>
  • To allow user to select an Actor Component, you can use FComponentReference

Specifiers

  • BlueprintAssignable - allows BP’s to assign listeners for dynamic multicast delegates
  • BlueprintCallable - allows BP’s to call dynamic multicast delegates
  • Transient - prevents saving or loading value in this prop, zero filled on load. It seems any property that is used only at runtime should have this flag to prevent accidentally filling it with something in editor. NOTE: Multicast delegates should not be marked Transient. This prevents blueprints from binding into them via the actor component event binding node/feature.
  • BlueprintGetter/BlueprintSetter - Makes access to get/set functions look like regular variable assignment. Mark get and set function with BlueprintInternalUseOnly so they don’t show up as separate functions to use. Particularly useful if you need to move a public UPROPERTY to protected/private, as you then need zero BP changes.

See also: https://benui.ca/unreal/uproperty/

Metatags

  • Clamp values
    • ClampMin="1"
    • ClampMax="5"
  • ExposeOnSpawn="true" visible on spawn nodes
  • DisplayThumbnail=false hides the thumbnail on fields that would normally show one. This can be useful to make the field take less space when the thumbnail isn’t useful, such as when selecting input actions.