Choice Dialogue Node
Overview
The Choice Dialogue Node presents the player with a line of dialogue followed by a set of selectable responses. Each choice has its own dedicated output port, allowing the graph to branch into completely independent conversation paths based on what the player picks. It is the primary tool for non-linear dialogue.

Ports
Previous
Input
Multi
Receives connections from any preceding node.
Choice 1, 2, … N
Output
Single (per choice)
One output port per choice. Each connects to a different branch in the graph.
Output ports are created and removed dynamically as choices are added or deleted. Port names are automatically renumbered if a choice is removed.
Node Properties
Speaker
DialogueSpeaker
The character delivering the prompt text. Controls the name, portrait, and optional camera shown in the UI. Optional — if left blank, the dialogue displays without speaker attribution.
+ (button)
—
Inline shortcut to create a new DialogueSpeaker ScriptableObject asset without leaving the graph editor. The new asset is immediately assigned and selected in the Inspector.
Focus Camera on Speaker
Toggle
When enabled, the speaker's assigned Cinemachine virtual camera is activated (priority 100) when this node executes. Only available when a Speaker is assigned.
Dialogue Text
string (multiline)
The prompt text displayed above the choices — typically the NPC's question or statement that the choices respond to.
Choices
List
The set of player response options. Each entry has a text field and a corresponding output port. Starts with 2 choices by default.
+ Add Choice
Button
Appends a new choice entry and its output port to the node.
✖ (per choice)
Button
Removes that choice and its output port. Any existing edge connection on that port is disconnected automatically.
How It Works
At runtime, DialogueManager processes the node as follows:
If Focus Camera on Speaker is enabled and the speaker has a Cinemachine camera assigned, that camera's priority is raised to
100, making it the active view.The Dialogue Text and the list of choice labels are passed to
DialogueUI.DisplayChoices().OnDialogueLinefires with the prompt text.The dialogue waits —
waitingForInput = true.When the player selects an option,
DialogueManager.MakeChoice(int choiceIndex)is called by the UI.OnChoiceMadefires with the zero-based choice index.The graph advances to the node connected to the matching output port.
Port Routing
Choice routing is matched by port name, not by serialization order. Port "Choice 1" connects to the node corresponding to choice index 0, "Choice 2" to index 1, and so on. This means re-ordering edges in the graph view will not break routing as long as port names are intact.
Validation
Previous input port has no incoming connection
Warning
Any choice text field is empty
Warning (per choice)
Fewer than 2 choices exist
Warning
One or more choice output ports are unconnected
Warning (count reported)
Usage Tips
Prompt text is optional — the Dialogue Text field can be left blank if you want to present choices without a preceding NPC line, though this is unusual.
Unconnected choice ports end the dialogue — if a player selects a choice whose output port has no connection,
DialogueManagerwill log an error and callEndDialogue(). Always connect every port.Choices are not conditional — all choices are always displayed regardless of quest state or game variables. If you need to show or hide choices based on conditions, you can route individual choices into a True/False Node immediately after to redirect them.
Camera focus persists — the speaker camera activated by Focus Camera on Speaker remains active until another node changes it or the dialogue ends. It does not reset automatically when advancing away from this node.
Creating Speakers inline — use the + button next to the Speaker field to create a new
DialogueSpeakerasset on the spot. The asset is saved to a location you choose and immediately ready to configure in the Inspector.
Last updated