The powerful, top-rated dialogue system used in Disco Elysium, 1000xRESIST, Citizen Sleeper, Eternights, Lake, Suzerain, Peglin, Jenny LeClue, and many many more, the Dialogue System for Unity makes it easy to add interactive dialogue and quests to your game. It's a complete, robust solution including a visual node-based editor, dialogue UIs, cutscenes, quest logs, save/load, and more. The core is a lean, efficient conversation system. A large collection of included, optional add-ons make it quick and easy to drop conversations into your project and integrate them with other assets. No scripting required. Complete C# source included.
>> Demo | Docs | Tutorials | Forum
>> Free Extras | Free Trial
Works with Unity 6+ and all versions including 2019, 2020, 2021, 2022 & newer.
✨ Full Featured ✨
✨ Powerful Editor ✨
✨ Flexible Runtime UIs ✨
✨ Easy Integration ✨
Designed for easy integration. Includes drop-in integration into existing frameworks & assets including:
✨ Programmer Friendly ✨ (but no scripting required!)
Tested on Windows, Mac, iOS, Android, WebGL, Xbox, PlayStation, Nintendo Switch, Linux.
Bonus packages are available on the Pixel Crushers website.
Version 2.2.53.1
[Core]
- Added: OnConversationLineEarly(Subtitle) special script method.
- Changed: UILocalizationManager no longer updates LocalizeUI components on start if no current language is specified (i.e., if default language is being used).
- Fixed: Conversations starting when editor play mode started would skip first entry if its Sequence was a Delay() command due to inaccurate Time.unscaledDeltaTime in first frame.
[Third Party Support]
- Text Animator: Fixed issue with accumulated text flashing for one frame before continuing typewriter.
Version 2.2.53:
[Core]
- Added: UI Toolkit integration (beta).
- Added: Tweening class.
- Added: Camera easing options in Dialogue Manager's Camera & Cutscene Settings.
- Added: DialogueManager.instance.conversationLinePrepared(Subtitle) C# event.
- Improved: Dialogue Editor > Stats now reports stats per actor.
- Improved: Camera() command now recognizes angles registered in SequencerShortcuts.
- Improved: QuestStateDispatcher.UpdateListeners() is now public.
- Fixed: SMSDialogueUI now observes [panel=#] tags.
- Fixed: SetPanel() immediate keyword now works.
- Fixed: Removed variable name reporting in Console window when opening dialogue database.
[Third Party Support]
- Behavior Designer Pro: Start Conversation task now properly reports when the conversation ends.
Version 2.2.52:
[Core]
- Fixed: DialogueManager.Bark() can now find barker's bark UI even if it's not in barker's hierarchy.
- Fixed: Unique ID Tool no longer forces each database's content to use the database's minimum Base ID value.
- Fixed: Custom subtitle panels (e.g., overhead bubble) now close when Visibility is set to Until Superceded Or Actor Change Or Menu.
- Fixed: SMS Dialogue UI now properly hides continue button after clicking it.
- Fixed: Using SetPortrait() with addressables works again.
- Fixed: When starting a second conversation that uses the default UI at the end of a conversation that uses an override UI, correct UI is now used.
- Fixed: In complex chained Delay() sequencer commands, sequencer now correctly sends last message to OnSequencerMessage().
- Fixed: Lua os.clock() function to correct iOS accuracy.
- Fixed: Issue where creating a StringAsset in a StringField could log a harmless error message in the editor.
- Improved: Dialogue Editor automatically removes variables with blank names when opening database.
- Improved: CharacterInfo.RegisterActorTransform reports if no Dialogue Manager is present.
- Improved: Changes/optimizations to Use Linear Group Mode option.
- Save System: Handles savers that destroy themselves in BeforeSceneChange().
[Third Party Support]
- Adventure Creator: Added acGetObjectiveStateByTitle(), acGetSubObjectiveState[ByTitle](), acGetSubObjectiveStateByTitle(), Lua functions; updated Unity API calls.
- articy:draft: Now handles articy X [i]..[/i] formatting codes; importer window respects Convert Markup To Rich Text checkbox.
- Localization Package: Dialogue System To String Table now correctly marks databases for saving; added Export Localized Fields checkbox.
Version 2.2.51:
[Core]
- Changed: Blank <START> node is no longer logged as "Actor says: ''", and OnConversationLine(Subtitle) is not invoked.
- Changed: Duplicating conversations no longer duplicates dialogue entry references to scene events.
- Improved: QuestLogWindowHotkey now has ToggleQuestLogWindow() method that you can call from a UI Button's OnClick event.
- Improved: Changing languages (e.g., DialogueManager.SetLanguage()) now also updates quest UIs.
- Improved: StandardUIContinueButtonFastForward now sets selected UI object to null if Hide Continue Button On Click is ticked.
- Improved: When using Input System package, InputDeviceManager no longer allocates any memory each frame.
- Improved: Unique ID Tool ensures unique Base IDs among databases and keeps each database's assets within Base ID range.
- Improved: Added InputDeviceRegistry component for easier Input System support.
- Improved: Player can no longer navigate to StandardUIQuestLogWindow's "No active/completed quests" text using keyboard or joystick.
- Improved: KeepRectTransformOnscreen does a better job of keeping entire RectTransform onscreen.
- Fixed: If all player responses are disabled (Conditions are false but Include Invalid is ticked), conversation ends.
- Fixed: If using Input System package, UIButtonKeyTrigger component doesn't disable input action by default.
- Fixed: Quick text entry on dialogue entry nodes (double-click) now supports IME keyboard input.
- Fixed: Dialogue System Trigger inspector wasn't marking quest name changes dirty on prefabs.
- Fixed: [LuaScriptWizard] and [LuaConditionWizard] attribute drawing issue.
- Fixed: ConversationStateSaver should no longer show wrong portrait images when multiple actors share panels.
- Fixed: Saving data when switching text tables.
- Fixed: DialogueActors in scenes without a Dialogue Manager no longer report an error when disabled.
- Fixed: Added missing built-in sequencer commands to "+" dropdown.
[Third Party Support]
- Adventure Creator: Added "Is Player Actor?" checkbox to Bark action.
- Feel: Updated for Feel 5.4.
- Localization Package: Added option to prepend name to key; no longer duplicates synchronized actors or quests; doesn't add string table entries for blank dialogue text.
- Playmaker: Added option to specify Set Quest State / Set Quest Entry State using dropdown menu instead of string.
- RPG Builder: Added rpgModifyStat() function.
- Twine: Fixed (if:) logic conditions, now allows white space between (if:) and [link], supports '->' links.
- Visual Scripting: Added Lua functions to get values of Application Variables.
- Yarn 1: Fixed import of custom commands with arguments containing forward slashes. (Put argument in quotes.)
- Yarn 2: Added import of portrait images.