View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.1.0
- Last updated
- First released
- Unity version
- 6000.3.9 or later
- Package size
- 419 KB
- Files
- 152
- Favorites
- 5
- Views in the past week
- 15
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $14.99 on
Keywords
Threader - Dialogue Toolkit
- Price drop
Node-based dialogue toolkit for Unity. Build branching conversations visually, gate choices on game variables, and wire everything to your game with a clean event API — no boilerplate required.
Lowest recorded price
Get 50% off on Asset Store (opens in new tab)Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 11
Threader - Dialogue Toolkit screenshot 1
About this asset
|| 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):
- NPC Node — one or more spoken lines with speaker name, Animator actions, and per-node events. Set Vars actions fire before lines play, so downstream choices already see updated state.
- Player Node — one or more auto-advancing player-spoken lines, for scripted player responses that don't require picking an option. Fires a separate event from NPC lines so UI can style them differently, and supports the same Set Vars and event actions as NPC Node.
- Player Choice Node — presents choices with inline condition gating per row: show, hide, or lock based on variable values.
- Bark NPC Node — the bark-graph counterpart to NPC Node: one shared line plus a list of per-speaker entries (audio clip, animator actions, Line Key), so multiple NPC types can share one bark graph while each playing their own voice and animation. Available only in bark graphs.
- Branch Node — silently routes flow to a True or False output port based on variable conditions, with no dialogue displayed.
- Set Variable Node — writes one or more variables without displaying any dialogue; useful for setting flags at branch starts or resetting counters in loops.
- Jump Node — re-routes execution to any tagged node, enabling loops and shared branches across the graph.
- Sub Graph Node — calls any other dialogue graph as a nested conversation and returns to the parent graph when it ends. Build reusable conversation modules once and reference them across as many graphs as needed.
- Random Node — picks a random output port each time it is reached.
- Weighted Random Node — picks a random output port with configurable per-port weights for controlled probability.
- Switch Node — multi-case routing based on a variable value; each case maps to its own output port.
- Wait Node — pauses execution for a configurable number of seconds.
- Fire Event Node — broadcasts a named string event (local or global scope) to your game code at any point in the flow.
- Play Audio Node — plays audio clips at a speaker's world position without pausing dialogue.
- Animator Trigger Node — sets Animator parameters on any registered speaker.
- Debug Node — logs messages and live variable values to the Console during development.
- End Node — terminates the conversation and optionally auto-switches the NPC's active entry point for the next interaction.
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:
- Typewriter text reveal with configurable speed and punctuation pauses
- Staggered choice button reveal for a polished cascading effect
- Space-to-skip line
- Visited choice history (automatically dims previously selected choices)
- Speaker name display and spatial audio routing
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);
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.
From the publisher's Asset Store listing.
Technical details
KEY FEATURES
- Visual node graph editor — build branching conversations without code; runs entirely in edit mode
- Dialogue Preview Window — step through any graph in the editor without entering Play mode; seed variable values and evaluate conditions live
- Render pipeline agnostic — works with URP, HDRP, and Built-in Render Pipeline; supports 2D and 3D projects
- 15 node types: NPC, Player Choice, Branch, Set Variable, Jump, Sub Graph, Random, Weighted Random, Switch, Wait, Fire Event, Play Audio, Animator Trigger, Debug, End
- Sub-graph system — call any dialogue graph from within another and return on completion; unlimited nesting depth; speaker identity resolves per-node, per-graph, or inherited from the caller
- Bark system — fire-and-forget ambient dialogue lines via BarkSource component with OnEnter, OnTimer, and Manual trigger modes; configurable cooldown; automatically suppressed during active conversations; OnBark and PlayBark() events on DialogueManager
- Line Sheet system — per-speaker audio clips and Animator actions stored separately from the graph; audio plays automatically from the speaker's world position; keeps voice-over production independent from conversation authoring
- Multi-language support — assign one Line Sheet per language to a graph; switch at runtime with SetActiveLanguage(); line text, choice text, and audio resolve from the active sheet automatically
- Speaker Roster — declare speaker names in a shared asset; speaker fields across all graphs become type-safe dropdowns instead of free-text strings
- Node templates — save any node selection as a reusable DialogueNodeTemplate asset; drag-to-stamp from the Create sidebar; stored in version control
- Graph bookmarks — pin any node to the sidebar for instant navigation; persisted per-graph
- Export script — export any graph as a plain-text screenplay from the graph toolbar; no extra tooling required
- Variable text substitution — embed {varName} and {varName:name} tokens directly in dialogue text; resolved at display time
- Inline variable conditions on choices — lock or hide options based on bools, ints, and strings; configurable per row; type-aware Inspector fields and operator filtering
- DialogueVariables ScriptableObject — define and manage game state with no C# required; multiple assets supported with in-order lookup
- Entry points — send any NPC to a named branch based on game state; auto-switch via End nodes or the IDialogueActor interface
- Event-driven API — subscribe to OnNPCLine, OnChoiceNode, OnDialogueEnd, OnBark and drive any UI framework
- Built-in UI Toolkit runtime layer — typewriter effect with punctuation pauses, staggered choice reveal, Space-to-skip, visited choice history, speaker name display
- Spatial audio routing — voice lines play from the speaker's world position automatically; 2D fallback included
- Animator integration — set triggers, bools, ints, and floats per NPC node or via Line Sheet, targeting any registered speaker
- ConditionService — register C# delegates for custom game logic (inventory, quests, reputation, etc.), referenced by key on any choice
- No third-party dependencies — works with any save system, any UI framework
- Full online docs + quick-access Help link — tutorial, node reference, API samples, and guides openable directly from the Unity menu bar
Compatibility
| Unity version | Built-in | URP | HDRP | Custom |
|---|---|---|---|---|
| 6000.3.9f1 | Compatible | Compatible | Compatible | Compatible |
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 to use in any pipeline.
As listed on the Asset Store.