For our capstone project, I designed and implemented a dialogue system. The system went through a few versions but I will discuss the most recent version. This system was designed and implemented for Unity 3D.
The system utilizes a node editor. Each node has a name and a line. The name refers to the speaker and the line is the line of dialogue that is said. It also includes a checkbox for if the node has prompts. Prompts are how players will respond to dialogue and can be used to create branches or loops. These can be as simple or complex as desired and will work as long as there is at least 1 exit node ( a node with no out connection).
When finished, click Save as XML to save in an XML format, this is used to load it back into the editor. Save as Scriptable is used to save it so you may use it with the Dialogue Script. XML bundles all the data into 3 files: nodes, connections, and prompts. Scriptable will save each node, connection, and prompt separately for easier usage.
When done saving, create a Dialogue Object and store the Nodes, Connections, and Prompts in it.
Once created, you can then add it onto the Dialogue Script on a GameObject! For this example, it works with the Interactable System in our game (Created by Zoe Purcell).
After everything is set up correctly, it can now be used in the game.
Documentation: Coming soon!