在场景Unity中未检测到输入.从该场景开始游戏时有效;否则不起作用

本文关键字:游戏 开始 有效 不起作用 Unity 检测 输入 在场 | 更新日期: 2023-09-27 18:25:53

我目前正在开发一款游戏,启动屏幕为0级,实际可玩级别为1-4级,失败屏幕为5级。我的问题是丢失屏幕。这是我的代码:

void Update () {
    if(Input.GetKeyDown(KeyCode.Return) && (CurrentLevel == 0)){
        CurrentLevel = 1;
        Application.LoadLevel (CurrentLevel);
    }
    if (CharacterMovement.Score == 10) {
        CurrentLevel = 2;
        CharacterMovement.Score = 11;
        Application.LoadLevel (CurrentLevel);
    }
    if (CharacterMovement.Lives == 0) {
        isLost = true;
        Debug.Log ("is now true");
        CurrentLevel = 5;
        Debug.Log ("current level is set to 5");
        Application.LoadLevel (CurrentLevel);
    }
    if (CurrentLevel == 5) {
        Debug.Log ("this is level 5");
        if (Input.GetKeyDown(KeyCode.Tab)) {
            Debug.Log ("tab is pressed");
        }
    }
}

当我失去所有生命时,我会被正确地发送到丢失屏幕,并且我从Debug.Log收到以下日志:"现在为true"、"当前级别设置为5"answers"这是级别5"。然而,当我在丢失屏幕上按下tab时,我从未收到日志"tab is pressed"。这一点很重要,因为我希望在按键时能够将游戏重置到开始屏幕。

奇怪的是,如果我在Unity编辑器的丢失屏幕上按下播放键并点击选项卡,它会完美工作。但如果我再打一次,失去了所有的生命,并试图达到目标,那就不会再奏效了。

这是怎么回事?

在场景Unity中未检测到输入.从该场景开始游戏时有效;否则不起作用

当你输掉游戏并加载场景5时,你的Lives仍然为零,所以CharacterMovement.Lives == 0将为真,你只需重复加载场景5。如果你看看你的控制台,我想里面有很多this is level 5。你必须处理这种情况。

你可以这样做:

void Update () {
    if(Input.GetKeyDown(KeyCode.Return) && (CurrentLevel == 0)){
        CurrentLevel = 1;
        Application.LoadLevel (CurrentLevel);
    }
    if (CharacterMovement.Score == 10) {
        CurrentLevel = 2;
        CharacterMovement.Score = 11;
        Application.LoadLevel (CurrentLevel);
    }
    if ((CurrentLevel != 5) && (CharacterMovement.Lives == 0)) { // Change this
        isLost = true;
        Debug.Log ("is now true");
        CurrentLevel = 5;
        Debug.Log ("current level is set to 5");
        Application.LoadLevel (CurrentLevel);
    }
    if (CurrentLevel == 5) {
        Debug.Log ("this is level 5");
        if (Input.GetKeyDown(KeyCode.Tab)) {
            Debug.Log ("tab is pressed");
        }
    }
}