End Node
Overview
The End Node marks the termination point of a dialogue graph. When DialogueManager reaches an End Node during traversal, it immediately calls EndDialogue() — unlocking the player, resetting all cameras, hiding the UI, and firing the OnDialogueEnded event.
A dialogue graph can contain multiple End Nodes, allowing different conversation branches to terminate cleanly without needing to route everything back to a single exit point.

Ports
Previous
Input
Multi
Receives connections from any node that should end the dialogue when reached. Accepts multiple incoming connections.
The End Node has no output port. It is always a terminal node in the graph.
Inspector Properties
The End Node has no configurable properties. Its only role is to signal that the dialogue is complete.
How It Works
When DialogueManager.ProcessCurrentNode() encounters a node of type "EndNode", it calls EndDialogue() directly. The full teardown sequence runs:
Any active Timeline is stopped (evaluating its final frame first).
Any active FocusOnTarget coroutine is stopped and camera targets are restored.
All speaker cameras activated during dialogue are reset to priority
1.The pre-dialogue gameplay camera is restored to its original priority.
The Dialogue UI is hidden.
Player movement is unlocked via
ILockCharacter.Lock(false).Node and edge caches are cleared.
OnDialogueEndedfires.
Validation
The graph editor will display a warning on the End Node if:
The Previous port has no incoming connection
"End node input is not connected"
An unconnected End Node is not an error — it can validly sit unused in a graph — but it will never be reached, making it redundant. This is flagged as a warning rather than an error to allow work-in-progress graphs.
Note: dialogue also ends naturally if any non-terminal node has no outgoing connections —
DialogueManagerwill callEndDialogue()and log a warning in that case. Using an explicit End Node is always preferred over relying on this fallback.
Usage Tips
Use one End Node per branch — in a dialogue with multiple choice paths, give each branch its own End Node rather than routing all paths back through a single one. This keeps the graph readable.
Put any cleanup before the End Node — if you need to fire events, start a quest, or trigger an animation when a conversation closes, place a Quest Node, Malbers Event Node, or Malbers Character Action Node immediately before the End Node rather than after it.
End Nodes are silent — no text is shown, no camera changes occur, and no delay is introduced. If you need a fade-out or brief pause before closing, place a Wait Node or a Cinemachine Dialogue Node (with
ResetToGameplay) before the End Node.
Last updated