> For the complete documentation index, see [llms.txt](https://fast-studios.gitbook.io/bindables/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fast-studios.gitbook.io/bindables/manual/bindable.md).

# Bindable

The core building block of Bindables: a typed value that can read from any other component in your scene.

`Bindable<T>` is the core building block of **Bindables**. It is a typed value that can either store its own value or read it from another value in your project.

A `Bindable<float>`, for example, works like a regular float until you connect it. Once connected, it reads from the member you picked (a field, property, or method on another component) instead of using its own stored value. The same field can work on its own or act as a connection between two systems, without extra references or small scripts just to move values around.

The type between the angle brackets, the `T` in `Bindable<T>`, defines what the Bindable can work with: a `Bindable<float>` connects to float values, a `Bindable<bool>` to booleans, and so on. This keeps bindings type safe, and filters incompatible members out of the Inspector.

## Getting a Bindable

There are two ways to end up with a Bindable field:

* **Declare it in your script** as a `Bindable<T>`. See [Scripting](/bindables/scripting/scripting.md).
* **Convert a field you already have**, for a single instance or in the script itself. See [Conversion](/bindables/manual/getting-started.md#conversion).

Either way, the field looks and behaves the same in the Inspector.

## Creating a Binding

You connect a Bindable right in the Inspector. In the default layout, a binding takes three steps:

* **OBJ:** Select the GameObject that contains the value you want to use.
* **COMP:** Select one of its components.
* **VAR:** Select the compatible member that should provide the Bindable's value.

<figure><img src="https://2481222926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmaoQ3JqmajH03CSjQGSD%2Fuploads%2FOH6sJVC5ZYxnwIKiclQU%2FBinding.gif?alt=media&amp;token=94a8956d-ff39-4f16-981c-0b99b819f533" alt="Selecting OBJ, COMP and VAR to create a binding"><figcaption></figcaption></figure>

The available members are filtered by the Bindable's type, so the Inspector only offers values that this `Bindable<T>` can actually use.

To remove a binding, set **COMP** back to **None**, and the Bindable simply goes back to holding its own value. In the [**Simple**](/bindables/manual/settings.md#simple) style (an optional layout you can turn on in Settings), you can also right-click the field and choose **Clear Binding**.

## What Can a Bindable Connect To?

A Bindable can connect to fields, properties, and parameterless methods of the matching type.

If the member is writable, the connection works both ways: setting the Bindable's value also updates the connected member. Read-only members can only act as sources.

A few rules explain most of what does and does not show up in the **VAR** list:

* The type has to match exactly. A `Bindable<float>` will not list an `int` member.
* Only instance members are listed: values that belong to a specific component on a GameObject. Static members (values shared by the whole class) are not available.
* Private members are included, so you do not have to make a field public just to bind it.
* Members marked `[Obsolete]` are hidden.

## Live View

Once a binding exists, a small toggle button appears at the right edge of the field. Click it to enter **Live View**, which replaces the binding controls with the current value of the connected member. Click it again to go back to the binding setup.

<figure><img src="https://2481222926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmaoQ3JqmajH03CSjQGSD%2Fuploads%2FczVyZNSBbGKCPG22QQa3%2FLive.gif?alt=media&amp;token=4b5560ee-f4fc-432e-93d6-11ee95bf1583" alt="Toggling Live View on a bound field"><figcaption></figcaption></figure>

This is useful once you already know what the Bindable is connected to, and want to check or adjust its value without leaving the component.

If the connected member is writable, you can edit its value right from Live View. Read-only members just show their value.

{% hint style="info" %}
With the [**Legacy**](/bindables/manual/settings.md#legacy) and [**Simple**](/bindables/manual/settings.md#simple) styles enabled together, the field has no extra buttons, so Live View is available from the field's context menu instead.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://fast-studios.gitbook.io/bindables/manual/bindable.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
