Ejemplo n.º 1
0
    /// <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);
            }
        }
    }