gpt4 book ai didi

unity3d - 在FixedUpdate上使用Input.GetKey()真的错误吗?

转载 作者:行者123 更新时间:2023-12-04 13:51:02 25 4
gpt4 key购买 nike

我们知道有一个“规则”,即不应在Input内部使用FixedUpdate()函数;如果这样做,Input.GetKeyDown()可能无法正常工作,但是使用Input.GetKey()真的错误吗?

假设我们要以不依赖于硬件性能的某种速率按住某个键时触发一些操作。我不想创建逻辑来使用增量时间来控制此逻辑,也不想在o​​jit_code中编写 key 检测代码并在Update中编写触发代码。

只在FixedUpdate中做所有事情没有意义吗?可能发生的事情-我们可能会丢失一些按键事件(无论如何我们都不希望发生),以保持我们想要的速度。

但是,如果发生一个关键事件,我们会丢失吗? FixedUpdate之后是否有重置,所以我们不会在Update上看到它吗?

最佳答案

GetKeyDown docs:

You need to call this function from the Update function, since the state gets reset each frame



因此,是的,每个帧都会重置Input状态,这意味着硬件将根据 Update之间 FixedUpdate触发的频率而产生效果。

虽然我建议您重新评估将内容移至 Update的逻辑,但确实没有一种简单的方法来避免创建由FixedUpdate使用的Input的副本。

更新:

关于以下Rutter的评论。我只是注意到OP在询问有关 GetKey()的问题,尽管文档未明确说明,但我对 GetKeyDown()撰写的内容仍然适用于 GetKey()

可以通过进入 Time Manager并将FixedUpdate速率更改为较长的间隔(如1秒)来验证这一点。然后执行以下操作:
void FixedUpdate() {
if(Input.GetKey(KeyCode.D)){
Debug.Log("D-Key Down");
} else {
Debug.Log("No key down");
}
}

如果在1秒固定帧之间按下并释放“D”,则只会看到“无键按下”。

关于unity3d - 在FixedUpdate上使用Input.GetKey()真的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com