你在 Unity 中实现了一个对话系统,但是似乎并没有正确工作。让我们一一分析你的代码。

首先,设置对话文本和当前行号的部分看起来正确。接下来,我们看到了你尝试检测数字键按下的部分,这才是主要问题所在。

在 Unity 中,检测键盘按键是否按下或释放的是 Input 类的 .GetKeyDownGetKeyUp 的方法,而不是 isPressedwasPressedThisFrame

你应该使用 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 方法用于检测某个数字键是否被按下。具体到你的情况,你可以根据需要修改所检测的键。这将能解决你的问题并让你的对话系统工作。