/// <summary> /// 检查下一句话的属性 /// </summary> public void CheckNextSentence() { // 如果对话队列没有对话内容了,则调用对话 if (sentences.Count == 0) { // 当对话结束时调用 EndDialogue(); return; } // 取出一条对话信息 sentence = sentences.Dequeue(); // 获取当前对话内容的所有选项节点 XmlNodeList optionNodes = sentence.SelectNodes("option"); // 如果当前对话内容内容选项节点数目为0,则激活对话面板并现实下一条对话内容,否则激活选择面板 if (optionNodes.Count == 0) { // 开启对话面板 DialoguePanel.SetActive(true); // 显示下一句话 DisplayNextSentence(sentence); } else { // 关闭对话面板 DialoguePanel.SetActive(false); // 开启选择面板 SelectPanel.SetActive(true); // 循环遍历选项节点 for (int i = 0; i < optionNodes.Count; i++) { options[i].gameObject.SetActive(true); options[i].onClick.RemoveAllListeners(); options[i].gameObject.name = "Option" + i; ButtonEvents buttonEvent = options[i].GetComponent <ButtonEvents>(); buttonEvent.CurrentAction = buttonEvent.CheckOption(optionNodes[i]); options[i].onClick.AddListener(buttonEvent.Execute); } } }