在场景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编辑器的丢失屏幕上按下播放键并点击选项卡,它会完美工作。但如果我再打一次,失去了所有的生命,并试图达到目标,那就不会再奏效了。
这是怎么回事?
当你输掉游戏并加载场景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");
}
}
}