C# 如何在Unity中对键码强制转换int?(C)

C# 如何在Unity中对键码强制转换int?(C),c#,unity3d,C#,Unity3d,我想循环一组键码来检查任何键盘事件,并在每个GetKeyUp和GetKeyDown事件中转发键的ascii或十进制值 我试过这个,但似乎不起作用 while (true) { for (int count = 97; count < 123; count++) { if (Input.GetKeyDown(((char)count).ToString())) { return count; }

我想循环一组键码来检查任何键盘事件,并在每个GetKeyUp和GetKeyDown事件中转发键的ascii或十进制值

我试过这个,但似乎不起作用

while (true)
{
    for (int count = 97; count < 123; count++)
    {
        if (Input.GetKeyDown(((char)count).ToString()))
        {
            return count;
        }
    }
}
是否有一种正确的方法来编写此代码,或者是否有其他我缺少的更有效的方法不涉及手动为每个键和修改键指定int?

您可以使用它来获取当前帧中输入的字符:

Input.inputString

返回在此帧中输入的键盘输入。只读

输入字符串中仅包含ASCII字符

字符串可以包含两个应处理的特殊字符: 字符\b表示退格。字符\n表示返回 或者进来


您可以在上面的文档链接中看到如何使用它的示例。

如果是Unity,Input.GetKeyDown和Input.GetKeyUp方法可以采用字符串或作为参数。使用KeyCode而不是强制转换为int。它更具可读性和可移植性。如果只查找一组键,请仅为该集创建枚举。然后,您可以通过该枚举只枚举正在监视的键,并调用GetKeyDown或GetKeyUp,然后返回该键

像这样未经测试的东西

public enum MyKeys
{
    KeyCode.Space,
    KeyCode.A,
    KeyCode.W,
    KeyCode.S,
    KeyCode.D
}

KeyCode CheckMyKey()
{
    foreach(var i in Enum.GetValues(typeof(MyKeys)))
    {
        if (Input.GetKeyDown(i))
            return i;
    }
}

如果这就是你正在做的,为什么要使用反射?制作一个数组/列表。这只是一个POC来说明一点。使用列表或键码数组将更加有效。