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
Display Name
Position:
Main
Type:
string
UPARAM(DisplayName="abc")
Allows renaming parameters in UFUNCTION
functions.
UFUNCTION(BlueprintCallable)
void MakeDog(
UPARAM(DisplayName = "Years (dog years)") float Years,
UPARAM(DisplayName = "Fur Color") FLinearColor Color);
ref
Position:
Main
Type:
flag
UPARAM(ref)
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);
Pickers
Allow Abstract
Position:
Meta
Type:
bool
UPARAM(meta=(AllowAbstract=true))
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);
Categories
Position:
Meta
Type:
string (comma-separated list of gameplay tags)
UPARAM(meta=(Categories="abc"))
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);
Must Implement
Position:
Meta
Type:
string (comma-separated list of interface script paths)
UPARAM(meta=(MustImplement="abc"))
Limits the classes selectable in blueprint from TSoftClassPtr
or TSubclassOf
to only those that implement the named interfaces
UFUNCTION(unreliable, client, BlueprintCallable, Category="Game|Feedback")
void ClientSpawnGenericCameraLensEffect(UPARAM(meta=(MustImplement ="CameraLensEffectInterface")) TSubclassOf<class AActor> LensEffectEmitterClass);