如何阻止对话回到开头?

Posted

技术标签:

【中文标题】如何阻止对话回到开头?【英文标题】:How to stop the dialogue from returning to the beginning? 【发布时间】:2022-01-14 15:33:51 【问题描述】:

当玩家与对象碰撞并使用“E”按钮检查它时触发我的对话。但是,当对话播放时,玩家仍然可以按下按钮,对话从头开始。如何在对话期间禁用用户输入或阻止它返回到第一句话?先感谢您! 这就是对话的触发方式:

if (triggered) 
    
        if (Input.GetKeyDown(KeyCode.E)) 
            onTriggerEnter.Invoke();


这是对话管理器脚本(我删除了不相关的行):

public class DialogueManager : MonoBehaviour 
private Queue<string> sentences;


void Start()

    sentences = new Queue<string>();


public void StartDialogue(Dialogue dialogue)

    sentences.Clear();
   
    foreach (string sentence in dialogue.sentences)
    
        sentences.Enqueue(sentence);
    

    DisplayNextSentence();


public void DisplayNextSentence()

    if (sentences.Count == 0)
    
        EndDialogue();
        return;
    
    string sentence = sentences.Dequeue();
    StopAllCoroutines();
    StartCoroutine(TypeSentence(sentence));

IEnumerator TypeSentence(string sentence)

    dialogueText.text = "";
    foreach (char letter in sentence.ToCharArray())
    
        dialogueText.text += letter;
        yield return new WaitForSeconds(typingSpeed);
    

void EndDialogue()

  

【问题讨论】:

【参考方案1】:

我假设您可以从触发它的位置访问DialogueManager 对象的实例?在这种情况下,您可以向对话管理器添加一个公共布尔值,在 StartDialogue() 中设置为 true,在 EndDialogue() 中设置为 false。然后确保当你按下 E 时这个布尔值是假的。

可能有很多方法可以实现它,但这对我来说似乎是一个简单的解决方案。

【讨论】:

以上是关于如何阻止对话回到开头?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 中的对话框上阻止鼠标输入

如何阻止我的模态对话框在按钮单击时关闭?

如何阻止警告对话框停止执行控制它的 Python 程序?

当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发

对话框会阻止其余代码执行吗?

阻止通知电子邮件上的Gmail线程对话