Hi,
Here are a few ways you could do that:
1. If each conversation has only one node linked from <START>, and that node has a sequence, you could run the sequence instead of the conversation:
Code: Select all
PlaySequenceInConversation("ACT 1/Mayor/Calendar");
PlaySequenceInConversation("ACT 1/Princess/Calendar");
PlaySequenceInConversation("ACT 1/Grandfather/Calendar");
...
void PlaySequenceInConversation(string conversationTitle)
{ // If the sequence uses 'speaker' or 'listener', you could pass those transforms to this method.
var conversation = DialogueManager.masterDatabase.GetConversation(conversationTitle);
var sequence = conversation.dialogueEntries[1].currentSequence;
DialogueManager.PlaySequence(sequence); // Pass speaker/listener transforms here if necessary.
}
2. Or you could tick the Dialogue Manager's Other Settings > Allow Simultaneous Conversations and not stop the other conversations:
Code: Select all
DialogueManager.StartConversation("ACT 1/Mayor/Calendar");
DialogueManager.StartConversation("ACT 1/Princess/Calendar");
DialogueManager.StartConversation("ACT 1/Grandfather/Calendar");
3. Or you could set up a Dialogue System Trigger for each one and tick the Queue checkbox to queue them to run in sequence. Then call the Dialogue System Triggers' OnUse() methods.
4. Or you could queue it yourself:
Code: Select all
var conversationQueue = new Queue<string>(new string[] { "ACT 1/Mayor/Calendar", "ACT 1/Princess/Calendar", "ACT 1/Grandfather/Calendar" });
DialogueManager.instance.conversationEnded += OnConversationEnded;
PlayNextConversationInQueue();
...
void OnConversationEnded(Transform actor) { PlayNextConversationInQueue(); }
...
void PlayNextConversationInQueue()
{
if (conversationQueue.Count > 0)
{
DialogueManager.StartConversation(conversationQueue.Dequeue());
}
}