在切换场景时,在Unity中携带两个或更多个键状态

时间:2016-09-09 03:17:13

标签: c# unity3d

关于这个问题的关注。

因此,如果您在Unity中创建一个空白项目,请创建以下代码:

if(Input.GetKey(KeyCode.RightArrow)){
Debug.Log("rightdown");
}
if(Input.GetKey(KeyCode.LeftArrow)){
Debug.Log("leftdown");
}

甚至可能更进一步并在其中放置一些GetKeyUp函数,您会注意到无论何时场景发生变化,无论是重新加载还是加载不同的场景,只有一个关键状态会延续,没有关键是按下什么键。正如您可能想象的那样,这对于我的项目来说是非常有问题的,这需要更改场景,并且如果按下多个键,则将其转移。如果你愿意,我已经尝试添加'过滤器',如下所示:

if (Input.GetKeyDown(KeyCode.UpArrow)) { moveUp = true; } if (Input.GetKeyUp(KeyCode.UpArrow)) { moveUp = false; } if (Input.GetKeyDown(KeyCode.RightArrow)) { moveRight = true; } if (Input.GetKeyUp(KeyCode.RightArrow)) { moveRight = false; } if (Input.GetKeyDown(KeyCode.DownArrow)) { moveDown = true; } if (Input.GetKeyUp(KeyCode.DownArrow)) { moveDown = false; } if (Input.GetKeyDown(KeyCode.LeftArrow)) { moveLeft = true; } if (Input.GetKeyUp(KeyCode.LeftArrow)) { moveLeft = false; }

哪种方式有效,因为使用的变量是statics,所以它们会继续存在。但是,当场景发生变化时,Unity'杀死/减少'的键也不会触发GetKeyUp状态。因此,除非您释放并重新按下键,否则移动变量将保持为真。

如果您需要更多解释,请与我们联系。我正以这个结束我的智慧。请不要建议“不要改变场景”或其他东西。我知道这是一个解决方案。我正在寻找解决我的问题。谢谢。

P.S。我已经向Unity提交了一份有关此问题的错误报告。根据我发现的一些论坛帖子,包括Stack Overflow本身,这个问题自2003年以来一直存在(我发现这个问题的第一篇文章)。 这是一篇文章:

http://answers.unity3d.com/questions/414388/inputgetbutton-not-working-after-i-change-scenes.html

谢谢所有将要撕掉头发的人。祝好运。 (或者解决方案可能很简单,而且我实际上是迟钝的。我真的很喜欢它,这意味着它已经修复了。)

0 个答案:

没有答案