Node-based dialog system for Unity with editor tooling and runtime UI.
- Graph-based dialog editor
- Choices with conditions and actions
- Runtime dialog playback system
- Voiceover support
- Background (storyboard) images
- Flexible UI via interfaces
- Autoplay / Interactive / Skip strategies
Note that UniTask should be installed before adding this package
Add package via Package Manager:
https://github.com/MIDIFrogs/DialogSystem.git
Place the package into your project's Packages folder.
- Create a Dialog Asset
- Open Window → Dialog Editor
- Build your dialog graph
- Add
DialogRunnerto scene - Assign UI (from Samples or custom)
- Open Window → Dialog Editor
- Click on
+button to create new dialog file - Add nodes and connect them
- Fill nodes with some text
- Open sample scene OR create new scene
- Add Dialog View prefab to Canvas
- Add Sample Dialog Runner to any GameObject
Assign in DialogRunner:
- Dialog Asset
- Dialog View (link from canvas)
Enter Play Mode
→ Dialog starts
public class Example : MonoBehaviour
{
[SerializeField] private DialogAsset dialog;
[SerializeField] private DialogRootView view;
private void Start()
{
// Initialize environment
var dialogService = new DialogService(rootView, context);
// Import dialog
var imported = DialogImporter.Import(dialog);
// Begin the show!
dialogService.Play(imported);
}
}- Core — pure dialog logic (no Unity dependencies)
- Unity — asset conversion and integrations
- UI — default UI implementation
- Graph-based dialog editor
- Validation and layout system
The system is interface-driven:
IDialogViewILineViewIChoicesViewIStoryboardViewIVoicePlayer
You can:
- modify provided prefabs
- or fully replace UI implementation
Supports:
- Custom font styles
- Extendable text processing pipeline
Check Samples~/BasicExample for:
- working scene
- example dialog
- UI prefabs
- TextMeshPro
- UniTask
MIT