Troubleshooting
Find your symptom, get the next check, and fix it: installing, authoring, binding to your code, running the game, and building a player.
On this page
Find the row that matches what you can see. The five tables follow where you are standing, from a fresh install to a player build.
Which surface owns the answer
Section titled “Which surface owns the answer”Four places report facts, and reading the wrong one wastes the most time.
| Surface | What it explains |
|---|---|
| Static validation | The graph itself: its structure, its parameters, its blackboard storage, its bindings |
| Live | One attached running instance, and the evaluation it just ran |
| Unity’s Console | Import diagnostics, plus the durable record of a repeating runtime occurrence |
| Reference Scan | Stale saved identities across the project, including graphs that are closed |
A green binding verdict beside an amber Live target reading is a real combination: the graph is authored correctly and this evaluation had nothing usable to act on.
Installing
Section titled “Installing”Installing and opening a graph
| Symptom | Check | Fix |
|---|---|---|
| The Behavior Tree Editor is missing from the Window menu. | Let import and the generated code pass finish, then read the console for compile errors. | Clear the compile errors. The editor window comes online with its runtime and its validators. |
| Unity reports a package resolution error. | Compare the declared dependency versions with what the project resolved. | Install through Package Manager or the project manifest so the whole set resolves. The declared versions are on the compatibility page. |
| Double-clicking a graph file reports malformed text. | Read the earliest error with its line and diagnostic code, then open the console for the matching record. | Repair that line in the graph file. No half-initialized editor window is opened for a file that cannot be read. |
| A graph will not open and it lives in a package you do not own. | Confirm whether the asset is read-only rather than a graph your project owns. | Copy or embed it somewhere you own, then edit the copy. |
| The editor window opens with no graph in it. | It was opened from the Window menu with nothing selected. | Double-click a graph for Static, or select a running agent for Live. |
| A keyboard shortcut a tooltip advertises does nothing. | Two are advertised and unbound in this release: A on an empty canvas and Cmd+R for Reload. | Click the buttons. The keys that are bound are listed in shortcuts. |
Install steps and the first graph are on the install page; the version facts are on compatibility; the bound keys are in shortcuts.
Authoring in the editor
Section titled “Authoring in the editor”Accepted edits autosave the graph file even while a parameter still needs repair. Autosave writes the graph file only; the explicit Save (Cmd/Ctrl+S) also bakes it and regenerates its member provider, so Save stays enabled after an autosave until that bake has run. Save stays blocked while validation reports a structural or parameter violation, which is the toolbar’s job to tell you: click each issue chip, select the first issue, and repair the saved value instead of deleting the node that reports it. Informational notes do not block it.
Authoring and saving
| Symptom | Check | Fix |
|---|---|---|
| Save is blocked and the toolbar shows issues. | Open the issue list and read the first graph, binding, or blackboard entry. | Repair that exact value. Common blockers: no root, a missing child, an invalid required number, a stale member, an unchosen variable type. |
| The status says Conflict. | Use Open diff to compare your editor copy with the file on disk. | Reload to take the disk version, or Keep local to overwrite it. Autosave resumes once the conflict is resolved. |
| Save failed with no conflict. | Look for a filesystem or permission problem on the asset. | Keep the editor open, fix the permission, and press Cmd/Ctrl+S again. Pending recovery is held outside the imported Assets tree. |
| Entering Play reports a binding-set fingerprint mismatch after you changed a binding. | Look at the toolbar: an enabled Save means the latest graph has not been baked yet. | Press Save or Cmd/Ctrl+S, let Unity compile the regenerated provider, then enter Play again. |
| The wrong branch runs. | Select the parent and read the ordered Children list, which card positions do not change. | Put specific high-priority choices before broad fallbacks in a Selector, and confirm each earlier child of a Sequence can actually succeed. |
| A Random Selector branch is never picked. | Read its enabled state and its weight against the first-pick percentages on the card. | A zero weight is valid and can never win. Give it a usable weight, or use Direct failure deliberately. |
| A subgraph or hosted tree reads Missing. | The saved asset reference no longer resolves. | Select the node or state and assign the intended graph. A same-named file is never substituted for you. |
| Reference Scan does not list a graph you expected. | Scanning covers saved graphs under Assets and embedded packages; other package locations are out. | Move the graph into a location you own, and repair every graph the scan names as unreadable before trusting the verdict. |
| A remap preview refuses to apply. | It fails closed when a graph is missing, read-only, changed since the scan, or would not parse afterwards. | Keep the work you want. Scan again, then remap against the current text. |
More detail lives in search and validation and Reference Scan.
Binding to your code
Section titled “Binding to your code”Bindings and values
| Symptom | Check | Fix |
|---|---|---|
| A member node keeps failing although its binding verdict is green. | Read the amber Live reason: the target variable was empty, or it held an object the member cannot act on. | Give the variable a usable object. This is an ordinary Failure, and the reading clears itself when the world cooperates. |
| A member went stale after a C# refactor. | Run Reference Scan. A member identity includes the exact parameter list: names, order, modifiers. | Rebind in the picker, or remap the identity across every occurrence. Nothing is guessed at runtime. |
| An entity graph rejects a value it will not store. | Entity blackboard storage is unmanaged: no managed text, no classes of your own, no object references, no interfaces, no dictionaries. | Choose a representable shape, put the data behind a component or buffer, or run that graph on the GameObject host. |
| A Live value will not accept an edit. | Expand the member card and read its state: read only, unavailable, incompatible, or no instance. | Only a healthy writable GameObject property or field takes a Live edit. Authored direction wins over a C# setter, and entity values are read-only. |
| A Live edit appeared to do nothing. | A refused edit changes nothing at all, and a setter of yours that throws is not retried. | Read the card state, then fix the setter or the direction. Side effects your setter performed before throwing belong to your code. |
| Play Mode throws about a missing member provider. | A graph with bindings needs its generated provider composed on the host. | Assign the generated provider on the agent, or supply the generated pair at entity registration. |
The binding surface itself is in bindings, and what a fault is rather than a failure is in faults.
Running the game
Section titled “Running the game”Play Mode and Live
| Symptom | Check | Fix |
|---|---|---|
| The graph does nothing in Play Mode. | Confirm the agent has a graph and an Update Mode, or that your system really calls the graph tick. | Assign the graph and pick an update mode, or add the tick call to the system that owns the runtime. |
| Every card reads IDLE and the agent went quiet. | Read Last result in the rail. A faulted graph prints Faulted there and stops ticking by design. | Read the fault trace, repair the member that threw, and re-enter Play Mode. |
| Live will not attach to a GameObject. | Confirm one eligible initialized agent, selected exactly, with a matching generated binding set. | Select the exact Behavior Agent component. Two eligible agents on one object are ambiguous, and an ineligible component does not fall back to a sibling. |
| Live will not attach to an entity. | Select the entity row under the live World in Unity’s integrated Hierarchy, not a proxy object or a stale index. | Reselect the current row. World sequence, entity index, generation, graph, and follower all take part in the identity. |
| Pause, Step, or a breakpoint does nothing. | Identify the host. GameObject controls own one ordinarily scheduled follower; entity Pause and Step mirror Unity globally. | Use Unity’s global controls for entities and for an externally ticked agent. Step is available only while paused. |
| No state ever becomes active in a machine. | Read the graph validity, the machine entry, and the exact Live target. | Repair the first Static issue, confirm the intended entry state, then reinitialize that runtime and select it again. |
| A state never leaves. | Read the transition evaluation cadence against the state’s Active Update lifetime. | A transition on On finish waits for the work to finish. Choose Continuous for an interrupt that must not wait. |
| The wrong transition wins. | Read the ordered outgoing list, and whether an Any State transition also matches. | Any State is evaluated first; then the first satisfied transition in the list wins. Reorder the list, because crossing lines on the canvas set no priority. |
| The graph is running content you already changed. | The graph file, the imported cache, and the running instance have three different lifetimes. | Save a valid graph, confirm which asset the host uses, reinitialize the runtime, then attach Live again. |
Attach and inspect, pause, step, and breakpoints, and transitions go deeper on each of these.
Building a player
Section titled “Building a player”Builds and players
| Symptom | Check | Fix |
|---|---|---|
| The build fails naming a provider fingerprint. | The generated provider no longer matches the graph it came from. | Reimport the graph and let generation and compilation finish before you build again. |
| The build fails naming a missing entity accessor. | Confirm the generated binding set and scheduler compiled for the consuming assembly. | Regenerate from the current graph and component declarations. Entity member bindings need Burst AOT. |
| The player runs and a bound branch never does. | Read the player log for a member provider or preservation complaint. | Assign the generated provider on the agent and rebuild. |
| The build refuses a graph that is not in any scene. | Preprocessing follows player scenes, preloaded assets, Resources, bundles, Addressables settings, and referenced graphs. | Repair the graph or remove the loading contract that reaches it. |
| An Addressables load returns a failure result. | Read the diagnostics on the result, then the key and its catalog inclusion. | Include the graph and everything it references in the built catalog. |
Addressables and builds covers the validation in full, and AOT and IL2CPP covers the generated call path.
Still stuck
Section titled “Still stuck”The node you were looking at, the package version, the Unity version, the host, plus the exact text of the issue are enough for us to work with. Help has the full list, including the identity facts a Live problem needs. If the thing you want is absent from the product, check what it does not do yet first.