I have a suspicion that probably just one tiny step was missed. Here's an example:
QM_DS_Integration_Example_2020-02-10.unitypackage
And this is a step-by-step tutorial of how I put it together:
1. Imported Quest Machine and Dialogue System.
2. Instead of importing the Dialogue System Support package in Quest Machine's Third Party Support folder, I Imported the updated version of the package from the
Quest Machine Extra Downloads page. It fixes a bug in which Lua functions could get unregistered when changing scenes. If you're not changing scenes yet, then it's not a concern. This fix is going to be in the next full release of Quest Machine, too.
3. Created a new dialogue database named 'DS Integration Example Dialogue Database'.
- Added a quest (stub) named 'exploreArea'.
- Added a conversation titled 'Officer Judd Conversation'. Set the "Yeah sure" node's Script field to:
Code: Select all
GiveQuest("Officer Judd", "exploreArea")
expecting to add a Quest Giver named 'Officer Judd'.
- Set Conditions on the initial NPC nodes so the right one is followed depending on the player's current quest state. I used the "..." button to fill in the text.
4. Created a new quest database named 'DS Integration Example Quest Database'.
5. Created a new quest named 'Explore Area Quest' and added it to the quest database.
- Set the ID to 'exploreArea'.
- Added some nodes to the quest. One node's condition listens for the message 'Explored' + 'Area'.
- Inspected the main quest properties. In the Offer Text section, added a Dialogue System Conversation element. Assigned the dialogue database. Clicked the round button to the right of the Conversation field to change it from freeform text entry into a dropdown. Selected the conversation.
- Repeated the process for States > Active > Dialogue Text and States > Successful > Dialogue Text.
6. Created a new scene.
7. Added the Quest Machine prefab. Assigned the quest database. Added a Dialogue System Quest Dialogue UI.
8. Added the Dialogue Manager prefab. Assigned the dialogue database. Added a Dialogue System Quest Machine Bridge.
9. Added an empty GameObject to represent the player. Tagged it 'Player'. Added a Quest Journal to it. Set the ID and Display Name to 'Player'.
10. Added an empty GameObject to represent Officer Judd. Added a Quest Giver to it. Set the ID and Display Name to 'Officer Judd'. Added the 'Explore Area Quest' to its Quests list.
11. Added a Canvas and a UI button to talk to Officer Judd. Configured its OnClick() to call Officer Judd's QuestGiver.StartDialogueWithPlayer method.
12. Added another UI button to explore downtown. Added a Quest Control component. Configured the button's OnClick() to call QuestControl.SendToMessageSystem 'Explored:Area'
If you play the scene and click the button to talk to Officer Judd, you can pick up the quest. Open the Quest Editor window, and inspect the Player GameObject. You'll see that the player has an active copy of the quest:
I didn't add any Journal Text to the quest. But if you were to add that, you should see the text in Quest Machine's journal UI.