Note: This page is still a work in progress. There are a lot of meta specifiers still to document!
Unreal's UPARAM 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 UPARAM
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 Logic
UPARAM(
DisplayName
="abc")
Position:
Main
Type:
string
Allows renaming parameters in UFUNCTION
functions.
UFUNCTION(BlueprintCallable)
void MakeDog(
UPARAM(DisplayName = "Years (dog years)") float Years,
UPARAM(DisplayName = "Fur Color") FLinearColor Color);
UPARAM(
ref
)
Position:
Main
Type:
flag
If a UFUNCTION
parameter is a non-const reference, it is displayed as an
output pin by default. It's assumed that the struct will be filled.
I would think hard about what the purpose is of your function when choosing
if you need to use UPARAM()
. Looking at the example code below:
FillDogInfo
takes an empty data structure that is provided to it, and fills it out. In Blueprints it is shown as an output pin.UseAndFillDogInfo
takes a reference to a data structure as input. That means it can change the values within the data structure. If you do not need to change the values of the data structure, then seeUseDogInfo
.UseDogInfo
takes aconst
reference data structure. It cannot change the values of the data.
// Fill an empty data structure
UFUNCTION(BlueprintCallable)
void FillDogInfo(FDogInfo& OutResult);
// Use existing data, add some more
UFUNCTION(BlueprintCallable)
void UseAndFillDogInfo(
UPARAM(ref) FDogInfo& SearchParams);
// Just use existing data and don't change it
UFUNCTION(BlueprintCallable)
void UseDogInfo(const FDogInfo& SearchParams);
UPARAM(meta=(
AllowAbstract
=true))
Position:
Meta
Type:
bool
Works exclusively with TSubclassOf
. By default, TSubclassOf<T>
will allow abstract choosing classes.
UFUNCTION(BlueprintCallable, Category = "Composure", meta = (DeterminesOutputType = "OutputType"))
UCompositingElementOutput* FindOutputPass(UPARAM(meta = (AllowAbstract = "false"))TSubclassOf<UCompositingElementOutput> OutputType, FName OptionalPassName = NAME_None);
UPARAM(meta=(
Categories
)
Position:
Meta
Type:
string (comma-separated list of gameplay tags)
Limits the Gameplay Tags that are selectable on the UFUNCTION
. Works in the same way as the UPROPERTY
Categories
meta flag.
UFUNCTION(BlueprintCallable)
void SellItems(UPARAM(meta=(Categories="Inventory.Item"))FGameplayTag Itemtag, int32 Count);
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category = GameplayEffects)
virtual void UpdateActiveGameplayEffectSetByCallerMagnitude(FActiveGameplayEffectHandle ActiveHandle, UPARAM(meta=(Categories = "SetByCaller"))FGameplayTag SetByCallerTag, float NewValue);