C# Unity Input.anyKeyDown 错误:Enum 上下文不存在内容
该代码段的目的是在检测到任何按键输入时,记录当前按下的键的名称。
if (Input.anyKeyDown)
{
foreach (KeyCode keyCode in Enum.GetValues(typeof(KeyCode)))
{
if (Input.GetKeyDown(keyCode))
{
Debug.LogError('Current Key is : ' + keyCode.ToString());
}
}
}
然而,使用 foreach 循环遍历 Enum 类型的所有值时,Enum 上下文必须至少有一个值。由于 KeyCode 枚举本身没有定义任何值,所以这段代码会导致编译错误:"Enum 上下文不存在内容"。
解决方案:
可以使用以下方法来解决该错误:
-
直接获取当前按下的按键:
if (Input.anyKeyDown) { Debug.LogError('Current Key is : ' + Input.GetKeyDown(KeyCode.None).ToString()); }
这个方法直接获取当前按下的按键,避免了遍历整个 `KeyCode` 枚举。
2. **使用 `Input.inputString` 获取输入字符:**
```c#
if (Input.anyKeyDown)
{
Debug.LogError('Current Key is : ' + Input.inputString);
}
这个方法获取当前输入的字符,并将其打印到控制台。
注意:
Input.inputString只能获取单个字符,如果用户连续按下了多个键,只能获取第一个按下的键。- 如果需要获取所有按下的键,可以使用
Input.GetKey或Input.GetKeyUp方法。
通过以上方法,可以有效解决 Input.anyKeyDown 错误,并实现按键输入的检测和记录。
原文地址: https://www.cveoy.top/t/topic/oycF 著作权归作者所有。请勿转载和采集!