The behaviour I want is as follows:
- Text will display using the 'continue' button. The player must click 'continue' to advance the conversation (this is a language learning game so the player needs to confirm they read and understood the text)
- I have 3 dialogue texts display and then I want the player character to (automatically) move to a new location in the level and the dialogue continue
- I've written a custom sequence command to handle moving the player (called NavigateTo)
- The sequence to move the player must activate at the end of the 3rd piece of text, and then the next text in the sequence displays once the player has arrived at the new location
I've been trying for a while to find something that will work. This is the first solution I've found that works:
- put the 3 dialogue texts into 3 separate Dialogue Entries
- turn on the 'continue' button in the Dialogue Manager
- Add an empty Dialogue Entry and link it to the last text entry. This entry has no text and no actor/conversant, only the following script:
Code: Select all
NavigateTo(Player, Living Rm Marker)->Message(Done);
SendMessage(OnContinue, , Generic Unity UI Dialogue UI)@Message(Done);
(The "Generic Unity UI Dialogue UI" object is the one with the UnityUIDialogueUI script attached. The SendMessage function simulates the 'continue' button being pressed. Without this, this Dialogue Entry never actually ends - I guess because the Dialogue Text field is empty)
I tried doing something like this:
Code: Select all
NavigateTo(Player, Living Rm Marker)->{{end}}
Also, if the continue button is pressed before this timeout, the NavigateTo is never called
So is there a better way to ensure my script gets processed when one dialogue message closes but before the next one opens?
Did I miss an easier way?