← All namespaces

property

Inspect, debug & data Core

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.

← Back to all namespaces