Node-based dialogue system for Unity.
Unity-DialogueEngine is a dialogue authoring and runtime package built around two main editor tools:
Dialogue Node Editor: build dialogue flow with Entry, Text, Delay, and Condition nodesDialogue Engine Manager: manage speakers, events, parameters, conditions, and runtime settings
Main features:
- Graph-based dialogue authoring
- Choice branching and condition branching
- Runtime playback controller and textbox interface
- Named speaker, event, parameter, and condition definitions
- Export and import workflow for manager settings and dialogue data
- Localization preview in the editor and localization loading at runtime
Menu path:
DialogueEngine/Dialogue Node Editor
This window is used to build dialogue flow as a node graph and save it as JSON.
Features:
- Top toolbar:
Add Entry,Add Node,Add Delay,Add Condition,Save,Refresh - Left preview panel: shows the selected Text Node's
textKeyand localized text in the default language - Top-right
dialogueIdfilter: lets you focus on a single dialogue - Build flow with node connections (
nextand choice branches) - Displays save-state notifications for unsaved changes, success, warnings, and errors
- Create an Entry node with
Add Entryand assign adialogueId. - Use the top-right
dialogueIddropdown to focus on a specific dialogue. - Create a Text Node with
Add Nodeand configuretextKey,speaker, and optionalevent. - While a specific
dialogueIdfilter is active, newly createdNode,Delay, andConditionnodes automatically inherit thatdialogueId.Add Entryis excluded. - Connect the Entry node's
nextoutput to the Text Node'sinputto start the dialogue flow. - Continue connecting dialogue nodes to build the main sequence. If branching is needed, enable
isChoiceand connect the choice output ports. - Insert a Delay node with
Add Delaywhen timing or pacing is required. - Insert a Condition node with
Add Conditionand connect itstrue/falseoutputs to different branches. - Click
Saveto write the graph to JSON. Check the status message after saving. - Use
Refreshto reload the graph from disk. - Click a node to view its
textKeyand localized preview in the left preview panel.
Menu path:
DialogueEngine/Dialogue Engine Manager
This window manages project-wide settings and runtime definitions through a ScriptableObject.
Tabs:
GeneralEventsSpeakersParametersConditionsExport & Import
The General tab contains global runtime settings such as language, reveal behavior, input options, and default UI overrides.
| Field | Description |
|---|---|
defaultLanguage |
Default language code, for example ko or en |
Overriding L10n File |
Custom localization JSON TextAsset used instead of the default DialogueTextData.json. Used by both node preview and runtime dialogue text loading |
dialogueTextRevealType |
Text reveal mode (instant / character-based / word-based) |
dialogueTextRevealSpeed |
Text reveal speed interval |
dialogueAdvanceInputs |
Allowed advance inputs (MouseLeft, Space, Enter) |
dialogueTextBackground |
Dialogue background sprite |
Overriding Prefab |
Prefab that replaces the default textbox. Must implement IDialogueEngineTextBox |
Player Speaker(System) |
Built-in player speaker settings with fixed speakerId/name=player, plus thumbnail and textColor |
The Events tab defines reusable named events and their type-specific data.
| Field | Description |
|---|---|
enableEvents |
Enables or disables the event system |
eventName |
Event key referenced by dialogue nodes |
eventType |
Event behavior type |
CameraShake |
Uses duration, intensity, shakeAxis |
CameraMove |
Uses targetName, targetPosition, duration |
PlaySound |
Uses audioClip, volume, loop |
StopSound |
Uses targetName, fadeOut |
The Speakers tab defines speaker presentation data such as name, thumbnail, and text color.
| Field | Description |
|---|---|
speakerId |
Speaker identifier selected from dialogue nodes |
name |
Display name shown in UI |
thumbnail |
Speaker thumbnail image |
textColor |
Speaker dialogue text color |
player |
Managed in the General tab, not edited directly in the Speakers tab |
The Parameters tab defines runtime values that can be used by conditions.
| Field | Description |
|---|---|
enableParameters |
Enables or disables the parameter system |
parameterName |
Parameter key |
parameterType |
Bool, Int, Float, String, or Time |
Default Value |
Type-specific default value |
VariableTime |
Must use hh:mm:ss format |
The Conditions tab defines reusable condition rules based on parameters.
| Field | Description |
|---|---|
enableConditions |
Enables or disables the condition system |
conditionName |
Condition key selected by Condition Nodes |
Parameter |
Must reference a parameter defined in the Parameters tab |
Operator |
Allowed comparison operators depend on parameter type |
Value |
Comparison value matching the selected parameter type |
Menu path:
DialogueEngine/Dialogue Engine Manager -> Export & Import
This tab exports and imports manager settings and dialogue JSON data.
| Button | Description |
|---|---|
Export All |
Exports manager settings and dialogue JSON together |
Export Manager |
Exports only manager settings |
Export Dialogue |
Exports only graph dialogue JSON |
Import |
Restores manager settings from Export All or Export Manager JSON |
- Unity object references such as thumbnails, audio clips, and prefabs are exported as asset paths
- During import, assets are restored from those paths if they exist
- Invalid JSON does not clear current settings; import fails safely
Default localization file path:
Assets/DialogueEngine/Resources/DialogueEngineResources/DialogueTextData.json
Expected JSON structure:
{
"GENERAL_HELLO": {
"ko": "¾È³çÇϼ¼¿ä",
"en": "Hello"
},
"NPC_GREETING": {
"ko": "¾î¼ ¿À¼¼¿ä",
"en": "Welcome"
}
}If Overriding L10n File is assigned in the General tab:
- The Node Editor preview uses that file first
- Runtime dialogue text loading also uses that file first
- If no override is assigned, the default
DialogueTextData.jsonis used
- Open
Dialogue Engine Manager - Define speakers, parameters, conditions, and events
- Configure general runtime settings
- Open
Dialogue Node Editor - Create an Entry node and assign a
dialogueId - Create Text, Delay, and Condition nodes and connect the flow
- Save the graph
- Initialize the runtime with
DialogueEngineManager.Init - Start dialogue with
StartDialogue(dialogueId)
Detailed documentation:
Assets/DialogueEngine/Docs/DialogueEngine_EditorGuide.mdAssets/DialogueEngine/Docs/DialogueEngine_EditorGuide.htmlAssets/DialogueEngine/Docs/DialogueEngineManager_API.html
For a Unity repository, commit at minimum:
Assets/Packages/ProjectSettings/
Do not commit:
Library/Temp/Logs/Obj/UserSettings/






