Wait Node

Overview

The Wait Node introduces a timed silent pause into a dialogue graph. When the runtime reaches a Wait Node, it immediately hides the Dialogue UI and suspends graph execution for a configurable number of seconds before automatically advancing to the next node.

No player input is required and nothing is displayed to the player during the wait — it is an invisible hold. This makes it ideal for scripted timing gaps: letting an animation play out before continuing dialogue, adding dramatic breathing room between scenes, or giving Cinemachine cameras time to blend before the next line of dialogue appears.


Ports

Port
Direction
Capacity
Description

Previous

Input

Multi

Accepts connections from any upstream node.

Next

Output

Single

Connects to the node that executes after the wait completes.


Node Properties

Property
Type
Default
Description

Duration (seconds)

Float

2.0

How long the graph pauses, in seconds. The field is clamped to 0 or greater — negative values entered in the UI are automatically corrected to 0.


How It Works

When the DialogueManager processes a Wait Node at runtime:

  1. Hides the Dialogue UIHideDialogueWindow() is called immediately so no dialogue panel is visible during the pause.

  2. Starts a coroutineStartCoroutine(WaitAndAdvance(duration)) begins the timed wait.

  3. Waits — The coroutine suspends using WaitForSeconds(Mathf.Max(0f, seconds)). The Mathf.Max call ensures a negative stored value never causes an error, even though the editor UI already clamps input to 0.

  4. Marks processing complete — After the wait, isProcessing is set to false.

  5. AdvancesAdvanceToNextNode() is called, following the single Next port to continue the graph.

⚠️ isProcessing remains true for the entire duration of the wait. This prevents any other graph traversal or dialogue action from firing until the pause is fully complete.


Validation

Status
Condition
Message

🔴 Error

Output port (Next) is not connected

"Wait node output is not connected"

🟡 Warning

Duration is less than 0

"Wait duration is negative — will be treated as 0"

Note: Unlike most other nodes, an unconnected output on a Wait Node is treated as an error rather than a warning. Because the Wait Node hides the Dialogue UI and suspends execution with no player interaction available, an unconnected output would silently freeze the dialogue system with no way for the player to recover.


Usage Tips

  • Pacing between lines — Place a Wait Node between two Dialogue Nodes to add a natural pause, simulating a character thinking or a dramatic beat before the next line appears.

  • Letting cameras settle — After a CinemachineDialogueNode with a fast blend time, a Wait Node gives the virtual camera time to reach its final position before dialogue text appears.

  • Animation timing — Use a Wait Node alongside a MalbersCharacterActionNode or Reactions2Node to hold the graph while an animation plays before continuing.

  • Duration of 0 — A duration of 0 still hides the Dialogue UI for a single frame and processes a coroutine yield. If you simply want to sequence nodes without any delay, connect them directly instead.

  • Silent cutscene gaps — In fully cinematic sequences where the Dialogue UI is already managed externally, a Wait Node provides a clean, self-contained delay without requiring any additional scripting.

  • Chaining waits — Multiple Wait Nodes can be placed in sequence for longer, staged delays (e.g., a 2-second pause, then an action, then another 1-second pause before dialogue resumes).

Last updated