你在 Unity 中实现了一个对话系统,但是似乎并没有正确工作。让我们一一分析你的代码。
首先,设置对话文本和当前行号的部分看起来正确。接下来,我们看到了你尝试检测数字键按下的部分,这才是主要问题所在。
在 Unity 中,检测键盘按键是否按下或释放的是 Input 类的 .GetKeyDown 和 GetKeyUp 的方法,而不是 isPressed 和 wasPressedThisFrame。
你应该使用 Input.GetKeyDown 来检测键盘按键是否被按下。例如:
if (Input.GetKeyDown(KeyCode.Digit1))
{
//处理这里
}
如果你想检测某个键是否被释放,可以用 Input.GetKeyUp。如果你想检测某个键是否被连续按下,可以用 Input.GetKey。
关于你的具体问题,你的问题是只有 Digit2 键被按下时才正确,这是因为在你的代码里,其他的条件都是检测 wasPressedThisFrame 而你的 Digit2 键却是 isPressed。而且,连续检测 wasPressedThisFrame 也会导致你的条件全部匹配导致你总是teleport回去。
下面的完整的例子你可以在你的 StartDialogue 方法中试用:
if (currentLine == 1)
{
textref.dialogueText.text = "LINE2";
textref.tutorialText.text = "Press the right number on your keyboard";
if (Input.GetKeyDown(KeyCode.Digit1) || Input.GetKeyDown(KeyCode.Digit3) || Input.GetKeyDown(KeyCode.Digit4) || Input.GetKeyDown(KeyCode.Digit5))
{
textref.dialogueText.text = "Sorry, that's wrong. You should go check again";
textref.tutorialText.text = " ";
teleportScript.Teleport();
return;
}
if (Input.GetKeyDown(KeyCode.Digit2))
{
textref.dialogueText.text = "Correct!";
textref.tutorialText.text = " ";
currentLine++;
return;
}
}
这段代码将 Input 类的 GetKeyDown 方法用于检测某个数字键是否被按下。具体到你的情况,你可以根据需要修改所检测的键。这将能解决你的问题并让你的对话系统工作。
评论 (0)