如何阻止对话回到开头?
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 时这个布尔值是假的。
可能有很多方法可以实现它,但这对我来说似乎是一个简单的解决方案。
【讨论】:
以上是关于如何阻止对话回到开头?的主要内容,如果未能解决你的问题,请参考以下文章