> 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/project-tools/diagnostics/dependency-graph.md).

# Dependency Graph

What is connected to what, as a graph you can walk.

**Window ▸ Binding System ▸ Bindings Dependency Graph**

The same information as [Bindings Dependencies](/binding-system-3/project-tools/diagnostics/dependencies.md), drawn as nodes and edges. A list is better for auditing; a graph is better for understanding.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FwPFuGZwGEv2HismoP5jD%2FScreenshot%202026-09-28%20at%2018.03.24.png?alt=media&amp;token=05e50cb0-70ef-4a18-81ec-a58364823f39" alt=""><figcaption><p>The Bindings Dependency Graph</p></figcaption></figure>

## What it draws

One node per object, one edge per binding. Edges point in the direction the value flows, so a chain of connections reads left to right and a cycle is visible as a cycle.

Nodes can be collapsed to a title, or expanded to show their bound fields. Each node has two buttons: **select and ping** the object, and **toggle its preview**, which shows a thumbnail so a graph of prefabs is recognisable at a glance.

### Sources that are not objects

A binding whose [source](/binding-system-3/overview/sources.md) is found while the game runs has no object to draw: a variable, a static type, a name, a tag, a pattern, a scene search or the context. Each distinct one is drawn as a node of its own, standing for the source itself: one node per variable, per static type, per tag, and so on. A binding that reads the variable `player` is an edge from the **player** node, and every other binding reading it leaves from the same node.

These nodes have their own colour in the legend, **Runtime Source**. The button on a variable node opens the [Bind Variables](/binding-system-3/overview/bind-variables.md) window. In a project built on variables many edges converge on very few nodes, so they can be switched off with **Runtime Sources** in the toolbar.

## Choosing what to include

<table><thead><tr><th width="250">Control</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Scenes</strong> / <strong>Prefabs</strong> / <strong>Assets</strong></td><td>Which sources to scan. Assets is off by default because it is the widest and slowest.</td></tr><tr><td><strong>Focus</strong></td><td>Drop an object here and only dependencies involving it are shown. The fastest way to answer "what touches this?"</td></tr><tr><td><strong>Runtime Sources</strong></td><td>Also draw the bindings whose source is found while the game runs, see <a href="#sources-that-are-not-objects">above</a>. On by default.</td></tr><tr><td><strong>Children</strong></td><td>Include the dependencies of child GameObjects in the focus.</td></tr><tr><td>Search</td><td>Filters nodes and fields by name.</td></tr><tr><td>Scene chips</td><td>Show or hide one scene at a time, which untangles a multi-scene setup quickly.</td></tr><tr><td><strong>Rebuild</strong></td><td>Rescan. The graph is a snapshot, not live.</td></tr></tbody></table>

## Getting around

<table><thead><tr><th width="250">Control</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Frame All</strong></td><td>Fits everything in view.</td></tr><tr><td>Collapse / expand all</td><td>One button for the whole graph.</td></tr><tr><td>Toggle all previews</td><td>Thumbnails on or off everywhere.</td></tr><tr><td>Mini map</td><td>For graphs bigger than the window.</td></tr><tr><td>Filter panel</td><td>Filter by value type, bind mode and node origin.</td></tr><tr><td><strong>Objects</strong> side panel</td><td>A flat list of the nodes, with its own filter, for jumping straight to one.</td></tr></tbody></table>

## The legend

Edges and nodes are colour coded, and the legend panel says how:

<table><thead><tr><th width="230">Grouping</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Value Types</strong></td><td>One colour per bound value type, so a graph of mixed types is readable.</td></tr><tr><td><strong>Bind Mode</strong></td><td>Read, write, read/write.</td></tr><tr><td><strong>Node Origin</strong></td><td>Scene, asset and prefab, or runtime source.</td></tr></tbody></table>

Clicking a legend chip filters the graph to that category, which makes it a filter as much as a key. Show only the writes, or only the `float` bindings.

## Editing a binding from the graph

A binding can be changed without leaving the graph. Either:

* click the **edge** itself, or
* press the edit button on the field's row of an expanded node (tooltip: *Open bind editor*). The other button on the row highlights the field in the Inspector.

Both open the binding in a popup: the ordinary bind row, with every menu, converter and modifier. It works for proxy bindings, for `Bind<T>` fields and for UI Document bindings.

Changes made in the popup count only once you press **Apply**, which closes it and rebuilds the graph. **Cancel**, or closing the popup, puts the binding back as it was when the popup opened. One popup is open at a time: while one holds changes nobody has applied, opening another brings it forward instead, and asks you to apply or cancel first.

To have the popup name the object and the field it edits at its top, turn on [Visualization ▸ Popup Target](/binding-system-3/reference/settings.md#visualization).

## The footer

Counts of visible objects and bindings against their totals, plus what is currently being tracked, so you always know whether you are looking at everything or at a slice.

## What it is good for

<table><thead><tr><th width="330">Question</th><th>What to do</th></tr></thead><tbody><tr><td>Is anything still bound to this object before I delete it?</td><td>Drop it in <strong>Focus</strong>.</td></tr><tr><td>Do I have a binding cycle?</td><td>A cycle in the graph is a cycle on screen.</td></tr><tr><td>How is this UI actually wired?</td><td>Focus the panel, turn on <strong>Children</strong>, expand the nodes.</td></tr><tr><td>Which objects are hubs?</td><td>The nodes with the most edges. Usually worth turning into a <a href="/binding-system-3/overview/bind-variables.md">bind variable</a>.</td></tr><tr><td>Is this prefab self-contained?</td><td>Focus it. Edges leaving the prefab are the ones to review.</td></tr></tbody></table>

{% hint style="info" %}
The graph is a snapshot taken when you build it. After changing bindings elsewhere, press **Rebuild**. A change applied from the graph's own popup rebuilds it for you.
{% endhint %}

## Cost

Building the graph over the whole project takes time, and the window shows progress while it works. Keep **Assets** off unless you need it, and use **Focus** rather than building everything and then squinting.
