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

Port
Direction
Capacity
Description

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

Property
Type
Description

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:

  1. 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.

  2. The Dialogue Text and the list of choice labels are passed to DialogueUI.DisplayChoices().

  3. OnDialogueLine fires with the prompt text.

  4. The dialogue waits — waitingForInput = true.

  5. When the player selects an option, DialogueManager.MakeChoice(int choiceIndex) is called by the UI.

  6. OnChoiceMade fires with the zero-based choice index.

  7. 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

Condition
Severity

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, DialogueManager will log an error and call EndDialogue(). 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 DialogueSpeaker asset on the spot. The asset is saved to a location you choose and immediately ready to configure in the Inspector.

Last updated