Я пытаюсь создать диалог, в котором диалог останавливается с заданным счетом, а затем продолжается после определенного события.Сначала я установил количество предложений на 6, и мне удалось остановить разговор после 3-го предложения
by setting the if statement in DisplayNextSentence() to ==> [sentence.Count == 3]
и заставить игрока сделать что-то еще, но я не знаю, как сделатьNPC продолжают диалог после завершения этого определенного события.
Не могли бы вы рассказать мне, как это сделать?Я действительно смотрел видео на YouTube, но эти видео либо смутили меня, либо не объяснили, как эта часть работает подробно, но я обнаружил, что этот метод как-то легче понять в моем случае.
container
[System.Serializable]
public class Dialogue {
//name of npc
public string name;
//sentences of the npc
[TextArea(3,10)]
public string[] sentences;
}
другой класс
public class DialogueTrigger : MonoBehaviour {
//calls the Dialogue class
public Dialogue dialogue;
//triggers the dialouge
public void TriggerDialogue()
{
FindObjectOfType<DialogueManager>().StartDialogue(dialogue);
}
}
менеджер
public class DialogueManager : MonoBehaviour {
private Queue<string> sentences;
public Text NPC_nameText;
public Text NPC_DialogueText;
void Start () {
sentences = new Queue<string>();
}
public void StartDialogue(Dialogue dialogue)
{
//Changes the name of the Name Text to given name
NPC_nameText.text = dialogue.name;
sentences.Clear();
//goes through the whole array of sentences
foreach(string sentence in dialogue.sentences)
{
sentences.Enqueue(sentence);
}
//displays the sentences
DisplayNextSentence();
}
public void DisplayNextSentence()
{
//condition if array sentence is finished looping
if (sentences.Count == 0)
{
//ends dialogue and goes to the next UI
EndDialogue();
return;
}
//Sentence appears in queue waiting for each sentence to finish
string sentence = sentences.Dequeue();
StopAllCoroutines();
StartCoroutine(TypeSentence(sentence));
}
void EndDialogue()
{
Debug.Log("End of Conversation");
}
IEnumerator TypeSentence(string sentence)
{
//types the characters for each sentence
NPC_DialogueText.text = "";
foreach (char letter in sentence.ToCharArray())
{
NPC_DialogueText.text += letter;
yield return null;
}
}
}