|| Feedback
|| Support
|| Roadmap
|| Changelog
|| Discord
Threader – Dialogue Toolkit
Threader is a lightweight, production-ready dialogue system built around a visual node graph. Write conversations the way you think about them — as a branching tree — and let Threader handle the rest.
Render pipeline agnostic — works with URP, HDRP, and Built-in. The included demo scene uses URP; the dialogue system itself has no rendering dependency and requires no changes for any pipeline.
VISUAL GRAPH EDITOR
Open the Dialogue Graph window and build conversations by connecting nodes. The editor runs entirely in edit mode — no Play mode needed to author or preview. Add NPC lines, branch on conditions, jump between sections, and set variables mid-conversation, all without writing code. A full set of keyboard shortcuts keeps authoring fast. Right-click any node to bookmark it to the sidebar for instant navigation in large graphs.
Node types (15):
DIALOGUE PREVIEW WINDOW
Test any graph without entering Play mode. Open the Preview Window (Ctrl+Shift+P), select a graph, seed variable values, and step through every branch interactively — line by line, choice by choice. Condition evaluation is live, so locked and hidden choices reflect your seeded values exactly as they would at runtime. An essential tool for catching broken branches before shipping.
SUB-GRAPH SYSTEM
Route flow into any dialogue graph and back — exactly like a function call. Link the Sub Graph Node's "On end" slot to chain additional flow after the nested graph completes.
Speaker identity resolves at runtime: set it on the Sub Graph node directly, inherit it from the calling graph, or let each inner node define its own speaker. Supports unlimited nesting depth; recursive loops are safely blocked. Build reusable conversation modules — shop greetings, quest debriefs, shared NPC reactions — and stamp them across as many graphs as needed without copy-pasting a single node.
BARK SYSTEM
Fire ambient one-liner lines that play in parallel without blocking the player or starting a full conversation. Attach a BarkSource component to any NPC, assign a bark graph, and choose a trigger mode: OnEnter (proximity), OnTimer (cooldown-based loop), or Manual (fire from code). A configurable cooldown prevents bark spam. Barks are automatically suppressed while a full conversation is active. DialogueManager exposes OnBark and PlayBark() so you can drive your own bark UI independently of the main dialogue layer. Perfect for overheard idle chatter, combat callouts, and ambient world-building.
LINE SHEET SYSTEM
Assign per-speaker audio clips and Animator actions to every line in a graph without touching the nodes themselves. Create a Line Sheet asset, add speaker entries, and map each dialogue line to an AudioClip and optional Animator parameters. Audio plays automatically during dialogue from the speaker's world position. Line Sheets keep voice-over production separate from conversation authoring — writers and programmers can work on the graph while audio designers populate the Line Sheet independently.
MULTI-LANGUAGE SUPPORT
Assign multiple Line Sheets to a single graph — one per language. Each sheet overrides the line text and audio for its language. Switch languages at runtime with SetActiveLanguage() and all dialogue, including choice text, resolves from the active language's sheet automatically. Add new languages without modifying a single node in the graph.
SPEAKER ROSTER
Declare your speaker names in a Speaker Roster asset. Speaker fields throughout the graph editor become type-safe dropdowns instead of free-text strings — no more typos breaking dialogue. Add the roster to your DialogueManager and every graph in the project picks it up automatically.
NODE TEMPLATES
Save any selection of nodes as a reusable template asset. Templates appear in the Create sidebar — drag one onto the canvas to stamp the full node pattern in seconds. Rename, delete, and refresh templates from the sidebar without leaving the graph editor. Stored as DialogueNodeTemplate ScriptableObjects, they live in version control alongside your other project assets.
VARIABLES & CONDITIONS — NO CODE REQUIRED
Create a DialogueVariables asset, define your bools, ints, and strings in the Inspector, then reference them directly in node conditions and Set Vars panels. Choices can be locked (greyed out) or hidden entirely when conditions fail — configurable per row. Assign multiple assets to DialogueManager and the runner searches them in order; split variables by domain (quests, economy, flags) or keep them in one asset.
Embed variable values directly in dialogue text using {varName} tokens, or show a human-readable display name with {varName:name}. Tokens resolve at display time with no additional setup.
For logic that lives in your game code — inventory, reputation, time of day — register a C# delegate with ConditionService and reference it by key on any choice. No subclassing required.
ENTRY POINTS
Tag any node as a named entry point and start NPCs at different branches based on game state. Entry points auto-switch via End nodes or from code through the IDialogueActor interface — the same interface works whether a character uses DialogueTrigger or NPCDialogue, so your quest and save systems never need to know the difference. Perfect for first-meeting, post-quest, and repeat-visit dialogue, all in a single graph.
RUNTIME UI (UI TOOLKIT)
A ready-to-use UI layer built on Unity UI Toolkit handles:
UI TOOLKIT IS NOT REQUIRED!
Swap it out entirely if you prefer your own UI — DialogueManager exposes clean C# events for every dialogue moment, and the runner operates independently of any UI component.
CLEAN API
DialogueManager.Instance.StartDialogue(graph, "AfterQuest", actor);
DialogueManager.Instance.OnNPCLine += line => ShowText(line.Text);
DialogueManager.Instance.OnChoiceNode += choices => BuildButtons(choices);
DialogueManager.Instance.OnDialogueEnd += HideUI;
DialogueManager.Instance.PlayBark(barkGraph, speakerTransform);
DialogueManager.Instance.OnBark += bark => ShowBarkBubble(bark.Text);
DialogueManager.Instance.VariablesList[0].SetBool("foundCat", true);
HIGHLIGHTS
DOCUMENTATION
Full online documentation including a step-by-step quick start, guided tutorial, node reference, variables walkthrough, conditions guide, entry points guide, saving guide, sub-graph guide, bark system guide, line sheet guide, translation guide, node templates guide, and full API reference. Open it any time from inside Unity via Threader → Help & Documentation.