【发布时间】: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()
{
}
}
【问题讨论】:
标签: c# unity3d input triggers dialog