> For the complete documentation index, see [llms.txt](https://postica.gitbook.io/binding-system-3/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://postica.gitbook.io/binding-system-3/overview/binding.md).

# The Bind Field

Every control on the Inspector row, and what it is for.

A bound field is one row. It is dense on purpose: everything you need is reachable without a foldout, and everything you rarely need is one click away.

It is the same row whichever [way you bound the field](/binding-system-3/overview/two-ways-to-bind.md): enabled from the Inspector on any field, or declared as a `Bind<T>` in your own code. This page describes both. The one control that differs is noted where it appears.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2F63VgzgJ9L8vkUoRbFLsX%2FScreenshot%202026-09-27%20at%2019.25.20.png?alt=media&amp;token=ed68fd25-1c05-4626-abe1-b7ab043594e2" alt="" width="563"><figcaption><p>A bound field with every control visible</p></figcaption></figure>

## The row, left to right

<table><thead><tr><th width="230">Control</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Bind toggle</strong></td><td>The hexagon left of the label. Off, the field is a plain value. On, it is a binding. Switching it off <strong>keeps the binding's setup</strong>, so you can return to a configured binding later; <a href="/binding-system-3/overview/proxy-bindings.md#the-toggle-and-disable-binding-are-different-actions">Disable Binding</a> is the one that discards it. Per instance, so the same component can be bound in one scene and not in another. With <a href="/binding-system-3/overview/micro-ui.md">Micro UI</a> on, a bound field keeps its own control and this hexagon is all that stays on the row.</td></tr><tr><td><strong>Error point</strong></td><td>Appears only when something is wrong. Hover it for the reason. See <a href="/binding-system-3/project-tools/diagnostics/errors.md">Error Visualization</a>.</td></tr><tr><td><strong>Reroute icon</strong></td><td>Appears when the field is rerouted to another member. See <a href="/binding-system-3/reference/extending/field-rerouting.md">Field Rerouting</a>.</td></tr><tr><td><strong>Optimized badge</strong></td><td>Appears when this binding qualifies to be replaced by a generated direct-access method at build time. See <a href="/binding-system-3/project-tools/performance/optimized-accessors.md">Optimized Accessors</a>.</td></tr><tr><td><strong>Mode icon</strong></td><td>Which way the value flows: reads from, writes to, or both. Click to change. See <a href="/binding-system-3/overview/modes-and-updates.md">Bind Modes</a>.</td></tr><tr><td><strong>Modifiers toggle</strong></td><td>Shows or hides the modifier stack. The number beside it is how many modifiers the binding has.</td></tr><tr><td><strong>Converters toggle</strong></td><td>Shows or hides the read and write converter fields.</td></tr><tr><td><strong>Preview toggle</strong></td><td>Shows the value currently at the end of the path, without turning on full debugging. See <a href="/binding-system-3/project-tools/diagnostics/path-value-preview.md">Path Value Preview</a>.</td></tr><tr><td><strong>Source toggle</strong></td><td>Shows or hides the source field. Its icon tells you which <a href="/binding-system-3/overview/sources.md">source mode</a> the binding is in, and the light under it is that mode's colour, from green for the modes that cost nothing to violet for the ones that search the scene. See <a href="/binding-system-3/overview/sources.md#cost">Cost</a>. <strong>Ctrl</strong> or <strong>Cmd</strong> click it to ping the source object in the Hierarchy or Project window.</td></tr><tr><td><strong>Path button</strong></td><td>The wide part of the row. Shows the current path, and the bind type on its right. It can name the source too, see <a href="#the-source-on-the-path">below</a>. Click to open the <a href="#the-bind-path-menu">bind path menu</a>.</td></tr><tr><td><strong>Bind menu button</strong></td><td>The <strong>···</strong> button. Opens the <a href="#the-bind-menu">bind menu</a>, which is a different menu: it configures the binding and never changes the path.</td></tr><tr><td><strong>Expand button</strong></td><td>Labelled <strong>BIND</strong>. <strong>Only appears when the row is too narrow to fit its controls</strong>, below roughly 220 pixels, which is what a deeply nested field or a docked narrow Inspector produces. It detaches the whole binding into a floating panel so you get the full row back. While the panel is open, the row reads <em>BIND PANEL OPEN : CLICK TO FOCUS</em>. In a normally sized Inspector you will never see this button, and that is correct.</td></tr></tbody></table>

{% hint style="info" %}
When a field is unbound, none of this is drawn and the field costs nothing extra to display. The row only appears once you turn the toggle on.
{% endhint %}

{% hint style="success" %}
Once a binding is set up, the row is mostly information you no longer read. [Micro UI](/binding-system-3/overview/micro-ui.md) draws a bound field as its own control plus the hexagon, and opens the whole row in a popup when you click it.
{% endhint %}

## The source on the path

The path button shows the path alone, and the source sits one click away on its toggle. **Visible Source** puts the source at the start of the path instead, in the colour of its [source mode](/binding-system-3/overview/sources.md): `Player (Transform)→Position`. A source found while the game runs is named by what it searches with, `#Boss (Health)` for a tag, rather than by whatever the search would find today.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FWoK5hE8P9xCHYIYWpxlj%2FScreenshot%202026-09-27%20at%2022.33.35.png?alt=media&amp;token=12020184-9e77-435a-bffd-e6097033292f" alt="" width="563"><figcaption><p>Visible Source on: each path starts with the object it reads from</p></figcaption></figure>

Set it in [Visualization ▸ Visible Source](/binding-system-3/reference/settings.md#visualization):

<table><thead><tr><th width="160">Value</th><th>What the path button shows</th></tr></thead><tbody><tr><td><strong>Off</strong></td><td>The path only. The default.</td></tr><tr><td><strong>On</strong></td><td>The source and the path, always. A line too long for the button loses its start.</td></tr><tr><td><strong>Auto</strong></td><td>The source and the path where the whole line fits, the path alone where it does not. It is decided again whenever the Inspector is resized.</td></tr></tbody></table>

With **On** or **Auto**, the source is also named in the path's tooltip, for a button too narrow to show it. This is a UI Toolkit option: the IMGUI drawer already shows the source on a row of its own, above the path.

## The value a write-only binding sends

A binding in **Write** mode never reads its source. What it writes starts from the field's own value, and binding the field hides that value. When no script sets it, there would be nothing left to set from the Inspector.

So a write-only binding can show the field's own value again, as a row labelled **Original value** at the foot of the binding, below the modifiers. A write runs the rows from the bottom up, starting from that value, through the modifiers and the write converter, to the path. Click the label of the path row to show or hide it, or use **Show Original Value** in the bind menu's **Settings** group. It starts hidden, and is remembered per binding.

When the binding has [parameters](/binding-system-3/overview/paths.md#parameters), the label of the path row folds those instead, and the bind menu is the only switch for the original value.

## Drag and drop

The row is a drop target for objects, at any time.

<table><thead><tr><th width="250">While dragging</th><th>What it means</th></tr></thead><tbody><tr><td><strong>CHANGE SOURCE</strong></td><td>The dragged object is compatible. Dropping replaces the source and keeps the path if it still resolves.</td></tr><tr><td><strong>INVALID SOURCE</strong></td><td>The dragged object has nothing that can feed this field.</td></tr><tr><td><strong>CHANGED!</strong></td><td>The drop succeeded. Flashes for a second.</td></tr><tr><td><strong>CANCELLED!</strong></td><td>You released outside the row, or pressed Escape.</td></tr></tbody></table>

Dropping on an empty binding sets the source and opens the bind path menu straight away, so a new binding is one drag and one click.

## Two menus

The bind row has two menus. They look alike and they are opened from the same row, but they do different jobs.

<table><thead><tr><th width="230">Menu</th><th width="200">Opened by</th><th>What it is for</th></tr></thead><tbody><tr><td><a href="#the-bind-path-menu"><strong>Bind path menu</strong></a></td><td>The <strong>path button</strong>, the wide part of the row</td><td>Choosing <strong>what</strong> the binding reads or writes: an object and a member on it.</td></tr><tr><td><a href="#the-bind-menu"><strong>Bind menu</strong></a></td><td>The <strong>···</strong> button at the end of the row</td><td>Setting up the binding itself: modifiers, update points, per-binding settings, copy and paste.</td></tr></tbody></table>

## The bind path menu

This is the menu that answers *where does the value come from*. It is searchable and grouped, and typing filters across every group at once. Picking an entry sets the path.

The menu opens straight away and fills itself while it is open. A group's contents are built when you open that group, not when the menu appears, and the building happens in the background. That is what keeps the menu usable on types with very large member trees, where listing everything first would take seconds.

The search works the same way. It walks outwards one level at a time under a budget: how deep it may go, how many results it may return, how many groups it may build, and how long it may spend. So it can finish before it has seen everything. When that happens a **Search deeper** row appears under the results, and each press raises every limit and searches further. Searching starts when you stop typing rather than on every keystroke.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FsnGrKbkGnfcZdgsCLU5L%2FScreenshot%202026-09-27%20at%2019.26.47.png?alt=media&amp;token=dd1c0102-266a-4dcd-b7a5-c2a193599d75" alt="" width="563"><figcaption><p>The bind path menu, with its groups: Pinned, Last Used, the components of the source, Other Sources</p></figcaption></figure>

<table><thead><tr><th width="250">Group</th><th>What it contains</th></tr></thead><tbody><tr><td><strong>Last Used</strong></td><td>The sources you bound to most recently. Turn off in <a href="/binding-system-3/reference/settings.md#visualization">Visualization</a> for a shorter menu.</td></tr><tr><td><strong>Pinned</strong></td><td>Paths you saved for reuse, by object. See <a href="/binding-system-3/overview/pinning.md">Pinned Paths</a>.</td></tr><tr><td><strong>Saved Paths</strong></td><td>Paths you saved for reuse, by type. They lead the group of the component or type they read from, above its members. See <a href="/binding-system-3/pipeline/templates.md#paths">Templates</a>.</td></tr><tr><td><strong>Components</strong></td><td>The components on the current source, each opening into its members.</td></tr><tr><td><strong>Other Sources</strong></td><td>Shortcuts into the browsable source modes: <strong>From Variable</strong> and <strong>From Static Value Of</strong>. Picking one here also switches the source mode, so there is no separate step.</td></tr><tr><td><strong>Other Providers</strong></td><td>Paths contributed by <a href="/binding-system-3/reference/extending/accessor-providers.md">accessor providers</a>, for example material properties.</td></tr><tr><td><strong>Nothing</strong></td><td>Bind to nothing on purpose: reads give the default value, writes are discarded, and the modifiers still run. Useful for a binding that exists only for its modifier chain.</td></tr></tbody></table>

## The bind menu

This is the menu that answers *how does the binding behave*. Nothing in it changes the path. It opens from the **···** button at the end of the row.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FtxucwXJtpXcZ7HtKJJMg%2FScreenshot%202026-09-27%20at%2019.27.47.png?alt=media&amp;token=c53d7bc6-e590-4ef8-a2ef-bc40e540ba0f" alt="" width="563"><figcaption><p>The bind menu: Update Points, Settings, Modifiers and Clipboard</p></figcaption></figure>

<table><thead><tr><th width="250">Group</th><th>What it contains</th></tr></thead><tbody><tr><td><strong>Update Points</strong></td><td>When the engine moves the value, with intervals. <strong>Proxy bindings only</strong>: a <code>Bind&#x3C;T></code> field is updated by your own code reading it, so the group is not shown. See <a href="/binding-system-3/overview/modes-and-updates.md">Update Points</a>.</td></tr><tr><td><strong>Settings</strong></td><td>Per binding switches, below.</td></tr><tr><td><strong>Clipboard</strong></td><td>Copy and paste the whole binding, or a single modifier or converter, onto another binding.</td></tr><tr><td><strong>Add Modifier</strong></td><td>The modifier catalogue, filtered to what this type accepts, plus <strong>Add From Template</strong>. A second group appears for <strong>POST-Conversion</strong> modifiers when a converter is present.</td></tr></tbody></table>

### The Settings group

<table><thead><tr><th width="250">Option</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Live Debug</strong></td><td>Show the value at every stage of the pipeline, every frame, in play mode and while authoring. Any stage can be pinned to a value of your own to exercise the rest. See <a href="/binding-system-3/project-tools/diagnostics/live-debug.md">Live Debug</a>.</td></tr><tr><td><strong>Auto Update</strong></td><td>Refresh once per frame, between <code>Update</code> and <code>LateUpdate</code>. Shown when no explicit update points are configured, which on a <code>Bind&#x3C;T></code> field is always. See <a href="/binding-system-3/overview/modes-and-updates.md#auto-update">Auto Update</a>.</td></tr><tr><td><strong>Propagate Nulls</strong></td><td>Decides what happens when part of the path is null. On, the result is null (or the default for value types). Off, an error is logged and the value is left unchanged.</td></tr><tr><td><strong>Show Original Value</strong></td><td>Write-only bindings. Shows the field's own value, the one the write starts from, as a row at the foot of the binding. See <a href="#the-value-a-write-only-binding-sends">above</a>.</td></tr><tr><td><strong>Value Changed Event</strong></td><td>Exposes a <code>UnityEvent</code> on the binding, invoked when the value changes. Available on bind types that carry one.</td></tr><tr><td><strong>Reroute</strong></td><td>Appears when the field has a route defined. See <a href="/binding-system-3/reference/extending/field-rerouting.md">Field Rerouting</a>.</td></tr><tr><td><strong>Reset Values</strong></td><td>Clears the whole binding back to its defaults: source, path, mode, flags, converters, modifiers and parameters.</td></tr></tbody></table>

## Editing several bindings at once

Three different things can happen when one edit should reach more than one binding. The drawer tells you which one you are in, and never widens an edit without saying so first.

### Several selected objects, with a `Bind<T>` field

Unity's own multi-object editing applies. The row edits every selected object, and values that differ across the selection are shown as mixed instead of being flattened. Menu labels say what they will do, for example *Add Modifier To ALL Objects*.

The modifier chains and the converters are the exception. They are drawn as one only when **every selected object holds the same modifier types in the same order**, and the same converter type on each side. When they do, editing a value inside a modifier edits it on all of them, and Unity marks the ones that differ as mixed values. When they do not, the chain is replaced by a notice saying *Different modifiers on the selected objects*, because the fields of one chain would address nothing on the other.

### Several selected objects, with a proxy binding

A [proxy binding](/binding-system-3/overview/proxy-bindings.md) is not stored inside the field it drives. It lives in a hidden list, and the same binding sits at a different index on every object that has it, so one shared property path cannot address all of them. The drawer therefore edits **one** object, and says so:

> Editing *Lamp 3*. Menu actions reach all 8 selected objects that share this binding; the fields below do not.

Menu actions always reach the whole selection. To make the fields do the same, turn on the **MIRROR** switch in that notice. The message then changes to say that changes reach all of them too.

Setting the binding up reaches the whole selection as well, without the switch:

<table><thead><tr><th width="270">Action</th><th>What reaches the other objects</th></tr></thead><tbody><tr><td><strong>Enable Binding</strong>, <strong>Disable Binding</strong></td><td>Act on every selected object, not only the one the Inspector is named after. A selection where some objects are bound and some are not offers both.</td></tr><tr><td>Picking a path in the bind path menu</td><td>An object whose binding is still blank takes the whole binding. One that already reads something takes only what the pick changed, and keeps its own source where that source can take the path.</td></tr><tr><td>Dropping an object on the row</td><td>The same, and the dropped object becomes the source of every one of them, as a drop does in any multi-object Inspector.</td></tr></tbody></table>

<table><thead><tr><th width="270">What a mirrored edit does</th><th>Detail</th></tr></thead><tbody><tr><td>Only what you actually change travels</td><td>Turning the switch on writes nothing by itself, and anything the other objects hold of their own is left alone.</td></tr><tr><td>The source is never carried</td><td>Objects that share a binding rarely share the object it reads from, so each one keeps its own.</td></tr><tr><td>It is a mode, not a selection</td><td>Off by default, remembered between sessions, and only ever consulted where the notice is showing.</td></tr></tbody></table>

### One binding in a list of bindings

Lists of bindings are usually set up row by row, and changing one number on all of them means opening every row. When the binding you are editing sits in such a list, a second notice appears:

> 6 of the 9 elements of *inputs* carry the same binding.

Turn on the **LIST** switch and your changes are repeated on those elements. How alike an element has to be before it counts is yours to pick, with the button beside the switch:

<table><thead><tr><th width="230">Scope</th><th>What it matches</th></tr></thead><tbody><tr><td><strong>Same binding</strong></td><td>Elements reading the same path through the same modifiers and converters. Their own values, parameters and sources are left alone. This is the default.</td></tr><tr><td><strong>Same modifiers</strong></td><td>Elements carrying the same modifiers and converters, whatever each of them reads.</td></tr><tr><td><strong>Every bound element</strong></td><td>Every element of the list that has a binding at this position, however little it has in common with this one.</td></tr></tbody></table>

It works for both kinds of binding: a list whose elements each hold a `Bind<T>`, and a list whose elements are each driven by a proxy binding.

{% hint style="info" %}
The two switches are independent and both are off until you turn them on. A list is not a selection: the elements of one are usually meant to differ, so the scope is something you choose rather than something you discover afterwards.
{% endhint %}

## Group source replacement

When many bindings on one object point at the same source, the header of the component or of the group offers a control that replaces the source of all of them in one go. It is on by default and can be turned off under [Visualization ▸ Source Replacement](/binding-system-3/reference/settings.md#visualization) if you have inspectors with hundreds of bindings and want them to build faster.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FqdFtC4ln47xnwabcSr2W%2FScreen%20Recording%202026-09-27%20at%2022.34.52.gif?alt=media&amp;token=2ba8106c-cda8-4871-a014-dc0a5df017f7" alt="" width="563"><figcaption><p>Replacing the source of a whole group at once</p></figcaption></figure>

Related pages

* [Two Ways to Bind](/binding-system-3/overview/two-ways-to-bind.md): with code, or without it.
* [Micro UI](/binding-system-3/overview/micro-ui.md): the same binding, drawn as a hexagon beside the field's own control.
* [Bind Types](/binding-system-3/overview/bind-types.md): which type to declare, and why.
* [Sources](/binding-system-3/overview/sources.md): the eight source modes.
* [Paths and Parameters](/binding-system-3/overview/paths.md): what a path can address.
* [Bind Modes and Update Points](/binding-system-3/overview/modes-and-updates.md): direction and timing.
* [Proxy Bindings](/binding-system-3/overview/proxy-bindings.md): the same row, on fields you do not own.
