如何使用 GetKeyDown() 有效检测何时释放任何键
How to use GetKeyDown() to efficiently detect when any key is being released
首先我要说的是,我对 C# 和 Unity 还很陌生,所以如果我缺乏被认为是常识的知识,请提前致歉。另外,我在这里检查了其他问题,但没有找到任何特别解决我的具体问题的答案。但是,如果有的话,我将不胜感激。
无论如何,我正在尝试编写一些代码,在按下某个键时播放声音,并在松开键时停止播放。不同的键会发出不同的声音,因此 GetKeyUp() 函数应适用于当前按下的任何键。
我已经为 inputKey 声明了一个字符串,inputKey 被分配给任何被按下的键,然后传递给包含 GetKeyUp() 函数的 if 语句。我已经尝试过此方法的许多小变体,但我目前使用的方法是唯一没有产生错误消息的方法(尽管代码仍然不起作用)
public string inputKey;
else if (Input.GetKeyDown(KeyCode.S))
{
freq = 293.66;
gain = volume;
}
inputKey = (Input.inputString).ToUpper();
if (Input.GetKeyUp(KeyCode.inputKey));
{
gain = 0;
}
所以在上面的例子中,当按键S被按下时,就会播放声音。 inputKey 显示为 'S' 所以我希望 'Input.GetKeyUp(KeyCode.inputKey)' 等同于 'Input.GetKeyUp(KeyCode.S' 并且声音停止播放,但事实并非如此,声音继续播放。
如有任何帮助或建议,我们将不胜感激。
我会改用 Input.GetKey()
。
而不是检查“S
按下了吗?开始播放 S 音。A
按下了吗?开始播放 A 音。有没有释放任何键?它是什么键?停止播放那声音”我会简单地检查每个键的 当前状态 并根据该状态启动或停止声音。
例如
soundOnS.gain = Input.GetKey(KeyCode.S) ? volume : 0;
你目前的方法不能,也永远不能,充分处理如果有人同时按下多个键会发生什么:当他们抬起一根手指,释放一个键(而不是另一个!)时会发出什么声音应该玩?
首先我要说的是,我对 C# 和 Unity 还很陌生,所以如果我缺乏被认为是常识的知识,请提前致歉。另外,我在这里检查了其他问题,但没有找到任何特别解决我的具体问题的答案。但是,如果有的话,我将不胜感激。
无论如何,我正在尝试编写一些代码,在按下某个键时播放声音,并在松开键时停止播放。不同的键会发出不同的声音,因此 GetKeyUp() 函数应适用于当前按下的任何键。
我已经为 inputKey 声明了一个字符串,inputKey 被分配给任何被按下的键,然后传递给包含 GetKeyUp() 函数的 if 语句。我已经尝试过此方法的许多小变体,但我目前使用的方法是唯一没有产生错误消息的方法(尽管代码仍然不起作用)
public string inputKey;
else if (Input.GetKeyDown(KeyCode.S))
{
freq = 293.66;
gain = volume;
}
inputKey = (Input.inputString).ToUpper();
if (Input.GetKeyUp(KeyCode.inputKey));
{
gain = 0;
}
所以在上面的例子中,当按键S被按下时,就会播放声音。 inputKey 显示为 'S' 所以我希望 'Input.GetKeyUp(KeyCode.inputKey)' 等同于 'Input.GetKeyUp(KeyCode.S' 并且声音停止播放,但事实并非如此,声音继续播放。
如有任何帮助或建议,我们将不胜感激。
我会改用 Input.GetKey()
。
而不是检查“S
按下了吗?开始播放 S 音。A
按下了吗?开始播放 A 音。有没有释放任何键?它是什么键?停止播放那声音”我会简单地检查每个键的 当前状态 并根据该状态启动或停止声音。
例如
soundOnS.gain = Input.GetKey(KeyCode.S) ? volume : 0;
你目前的方法不能,也永远不能,充分处理如果有人同时按下多个键会发生什么:当他们抬起一根手指,释放一个键(而不是另一个!)时会发出什么声音应该玩?