C# 如果我在Unity游戏中按空格键太快,对话就会变得杂乱无章
我为一个大学项目在Unity中创建了一个小对话场景。角色结束对话后,用户按下空格键进入对话的下一部分。但是,如果用户过快地按下空格键(可能他们想跳过对话),两个字符之间的对话就会变得混乱。我试图实现下面的代码,但是对话的流动性受到了太多的影响C# 如果我在Unity游戏中按空格键太快,对话就会变得杂乱无章,c#,unity3d,C#,Unity3d,我为一个大学项目在Unity中创建了一个小对话场景。角色结束对话后,用户按下空格键进入对话的下一部分。但是,如果用户过快地按下空格键(可能他们想跳过对话),两个字符之间的对话就会变得混乱。我试图实现下面的代码,但是对话的流动性受到了太多的影响 System.Threading.Thread.Sleep(2000) 下面是处理对话的代码。对话本身包含在一个JSON文件中 void Update() { if (Input.GetKeyDown(KeyCode.Space)) {
System.Threading.Thread.Sleep(2000)
下面是处理对话的代码。对话本身包含在一个JSON文件中
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
UpdatePanelState();
}
}
private void InitialisePanels()
{
leftPanel.characterIsTalking = true;
rightPanel.characterIsTalking = false;
leftCharacterActive = !leftCharacterActive;
leftPanel.Configure(currentEvent.dialogues[stepIndex]);
rightPanel.Configure(currentEvent.dialogues[stepIndex + 1]);
StartCoroutine(MasterManager.animationManager.IntroAnimation());
stepIndex++;
}
private void ConfigurePanels()
{
if (leftCharacterActive == true)
{
leftPanel.characterIsTalking = true;
rightPanel.characterIsTalking = false;
leftPanel.Configure(currentEvent.dialogues[stepIndex]);
rightPanel.ToggleCharacterMask();
}
else
{
leftPanel.characterIsTalking = false;
rightPanel.characterIsTalking = true;
leftPanel.ToggleCharacterMask();
rightPanel.Configure(currentEvent.dialogues[stepIndex]);
}
}
void UpdatePanelState()
{
if (stepIndex < currentEvent.dialogues.Count)
{
ConfigurePanels();
leftCharacterActive = !leftCharacterActive;
stepIndex++;
}
else
{
StartCoroutine(MasterManager.animationManager.ExitAnimation());
}
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
UpdatePanelState();
}
}
私有无效初始值()
{
leftPanel.com=true;
rightPanel.com=false;
leftCharacterActive=!leftCharacterActive;
Configure(currentEvent.Dialogs[stepIndex]);
配置(currentEvent.Dialogs[stepIndex+1]);
start例程(MasterManager.animationManager.IntroAnimation());
stepIndex++;
}
专用void配置面板()
{
如果(leftCharacterActive==true)
{
leftPanel.com=true;
rightPanel.com=false;
Configure(currentEvent.Dialogs[stepIndex]);
rightPanel.ToggleCharacterMask();
}
其他的
{
leftPanel.com=false;
rightPanel.com=true;
leftPanel.ToggleCharacterMask();
Configure(currentEvent.Dialogs[stepIndex]);
}
}
void UpdatePanelState()
{
if(步骤索引
}
由于在void方法中不能使用yield new return(WaitForSeconds(x))这一事实,我被难住了。我已经包括了一个屏幕截图,如果用户在角色对话结束前过快按下空格键会发生什么
我如何解决这个问题?如果您需要查看更多代码,请告诉我。--我的理解---
我怀疑这与如何使用stepindex从文件加载有关
按照我的理解,您希望它逐渐从JSON文件加载到文本中,以便显示在窗口中。但当同时请求更多步骤时,就会发生错误
因为这段对话听起来像是两个角色之间的对话,在这两个角色之间有一个来回的对话
---解决办法--- 一种解决方案是检查角色当前是否有对话。如果是,并且再次按下空格键,要么什么也不发生,要么会加快对话的速度
你在寻找什么样的解决方案?要在额外点击时快速加载的东西,或者用户必须等待它完成的东西?为什么不在协同程序中使用
产生新的返回等待秒数(x)
?@ryemos啊,谢谢,没有想到这一点。现在工作正常。如果您仍然需要帮助,请发布面板内容。配置方法除非您知道自己在做什么,否则切勿使用线程。睡眠。