A third-party Unity package for building data-driven branching dialogue with ScriptableObject assets, conditional choices, actions, validation, runtime presenters, and save-ready state.
- ScriptableObject-based dialogue assets for authoring conversations in Unity.
- Speakers, dialogue nodes, lines, and branching player choices.
- Conditional choices that can appear or hide based on dialogue state.
- Dialogue actions for setting variables or raising event IDs to game systems.
- Built-in validation for duplicate ids, missing links, empty text, unknown speakers, ambiguous flow, and unreachable nodes.
- UGUI/TextMeshPro presenter with speaker name, portrait, typewriter text, continue button, optional line audio, and generated choice buttons.
- Sample two-speaker presenter for left/right portrait layouts.
- Save/resume snapshots for dialogue progress and variables.
- Extensible condition and action classes for custom project behavior.
- Editor tooling for validation, sample asset creation, and managed-reference dropdowns.
- EditMode tests for core runtime behavior.
- No visual node graph yet.
- No built-in localization table integration yet.
- No Timeline or Cinemachine integration yet.
- Sample voice/audio support is intentionally simple and presenter-driven.
- The included UI presenters are examples, not a full visual novel framework.
Install through Unity Package Manager:
- Open
Window > Package Manager. - Click
+. - Choose
Add package from git URL.... - Enter:
https://github.com/Auri304/unity-dialogue-system.git
You can also clone the repository and add it as a local package by selecting the package's package.json.
- Create a sample asset from
Tools > Unity Dialogue System > Create Sample Dialogue Asset. - Add
DialoguePlayerUIto a scene object. - Assign a root panel, speaker text, line text, portrait image, continue button, choice root, and
DialogueChoiceButtonprefab. - Assign the sample
DialogueAsset. - Enable
Play On Start, or callPlay(dialogueAsset)from another script. - Select the dialogue asset and press
Validate Dialoguein the Inspector.
This package includes a complete sample scene in:
Samples~/DialogueDemo
It contains:
DemoScene/DialogueDemo.unity- demo art, prefabs, audio, and dialogue data
DialogueDemoEventReceiverDialogueDemoVariableDebugViewTwoSpeakerDialoguePlayerUI
The sample demonstrates typewriter text, speaker portraits, branching choices, event reactions, and optional line audio.
Use the toolkit when you need:
- branching NPC conversations
- tutorial dialogue
- story scenes with conditional choices
- dialogue-driven game events
- saveable conversation progress
- custom dialogue UI connected to reusable runtime logic
The runtime is presentation-agnostic. DialogueRunner controls dialogue flow and raises events such as line presented, choices presented, and dialogue ended. UI scripts decide how those events are shown.
You can use:
DialoguePlayerUIfor a simple generic UGUI/TextMeshPro dialogue panel.TwoSpeakerDialoguePlayerUIfrom the sample for a left/right speaker layout.- A custom presenter that subscribes to
DialogueRunnerevents and displays the dialogue as subtitles, floating speech bubbles, RPG dialogue boxes, or any other game-specific UI.
The toolkit is split into layers:
- Authoring Data:
DialogueAsset, speakers, nodes, lines, choices, conditions, and actions. - Runtime Core:
DialogueRunner, dialogue context, variables, actions, conditions, and snapshots. - Presentation: UI scripts that listen to runner events and display dialogue.
- Editor Tooling: validation buttons, menu commands, and managed-reference drawers.
- Samples: demo scene, sample presenter, and event-reaction scripts.
- Tests: EditMode tests for runtime traversal, branching, actions, conditions, snapshots, and validation.
The runner does not know about UI, scenes, quests, inventory, characters, or game-specific systems. It only knows dialogue flow. Game systems connect through variables, raised event IDs, and presenter scripts.
DialogueAssetEditor: Adds a validation section to each dialogue asset inspector.Validate Selected Dialogue Assets: Menu command underTools > Unity Dialogue System.Create Sample Dialogue Asset: Menu command that generates a small branching sample conversation.ManagedReferenceChoiceDrawer: Dropdown support for selecting concrete condition/action types in managed-reference fields.
EditMode tests live under:
Tests/Editor
They cover core runtime behavior, including traversal, branching, condition filtering, action execution, save/resume snapshots, and validation errors.
To run them in Unity:
- Open
Window > General > Test Runner. - Select the
EditModetab. - Click
Refreshif the tests are not visible. - Select the dialogue system test assembly.
- Click
Run Selected, or useRun Allto run the full EditMode suite.
- Visual node graph editor.
- Localization support.
- Dialogue history/log.
- Timeline/Cinemachine integration sample.
- Richer voice-over tooling.
- More sample presenters for different UI styles.






