如何阻止对话回到开头?

How to stop the dialogue from returning to the beginning?

当玩家与物体发生碰撞并使用“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()
{
  
}

}

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

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