property
Read and write any property on any object (get, set, list, reset). The reflection escape hatch.
What it’s for
This namespace reaches any UPROPERTY on any UObject through reflection: placed
actors, their components, asset Class Default Objects, and live widget instances. You point it at an object
by path, name the field, and read or write the value as JSON. It is the generic escape hatch for when there
is no dedicated setter for what you want to touch.
Use it to inspect an object's real field values, discover the exact property name behind an editor label,
flip a configured default on a Blueprint, or roll a single field back to its class default. Field names are
case-sensitive and match the C++ declaration, not the Blueprint display name, so the usual pattern is to list
first, then get or set. For Blueprint asset paths, the calls automatically resolve to the Class Default Object,
so you see and edit the configured defaults rather than UBlueprint internals.
Prefer a typed route when one exists: widget.set understands UMG slot semantics,
actor.set_blueprint_variables understands Blueprint variable shapes, and
actor.describe returns a whole actor plus its component state in one read. Reach for
property when no typed setter covers the field, or for one-off live edits. For repeatable,
diffable baselines across a folder, use asset.dump instead; property.list is the
one-off live read.
Examples
Find the real field name, then read its value
Property names rarely match the label you see in the editor, so list the object first, then read the exact field.
You: What is the DefaultPawnData set to on B_MyGameMode?
call("property.list", {objectPath:"/Game/MyGame/Modes/B_MyGameMode", nameMatch:"pawn"})
→ {properties:[{name:"DefaultPawnData", isOverridden:true}]}
call("property.get", {objectPath:"/Game/MyGame/Modes/B_MyGameMode",
propertyName:"DefaultPawnData"})
→ {value:"/Game/MyGame/Data/PawnData_Default"}
Done. DefaultPawnData is PawnData_Default.
Write a field with no typed setter
When nothing dedicated covers the property, set it by name through reflection.
You: Hide the BeaconLight actor in the level.
call("property.set", {objectPath:"BeaconLight", propertyName:"bHidden", value:true})
→ {ok:true}
Done. BeaconLight is now hidden.
Roll one field back to its class default
Reset copies the class default in and clears the override metadata, so no no-op override lingers on save.
You: Reset the HintText visibility on W_HUD back to default.
call("property.reset", {objectPath:"/Game/MyGame/UI/W_HUD.W_HUD_C:WidgetTree.HintText",
propertyName:"Visibility"})
→ {oldValue:"Collapsed", defaultValue:"Visible", wasOverridden:true, isOverridden:false}
Done. Visibility reset to the class default.