C#和#x27;键码';不包含';编号';

C#和#x27;键码';不包含';编号';,c#,variables,C#,Variables,我试图从几个不同的“如果”语句中找到一条捷径。相反,我只更改for循环给出的一个值。 “KeyCode.Alpha1”建议我按键盘顶部的“1”键,依此类推。 所以“numberKey”变量有一个存储了“Alpha1”的字符串,但它只是以“numberKey”的形式读取它。然后我得到一条错误消息,说“KeyCode”不包含“numberKey”的定义。帮助 private void Inventory() { for (int i = 1; i <= item

我试图从几个不同的“如果”语句中找到一条捷径。相反,我只更改for循环给出的一个值。 “KeyCode.Alpha1”建议我按键盘顶部的“1”键,依此类推。 所以“numberKey”变量有一个存储了“Alpha1”的字符串,但它只是以“numberKey”的形式读取它。然后我得到一条错误消息,说“KeyCode”不包含“numberKey”的定义。帮助

    private void Inventory()
    {
        for (int i = 1; i <= items.Count; i++)
        {
            string numberKey = "Alpha" + i.ToString();
            if (Input.GetKeyDown(KeyCode.numberKey))
            {
                items[currentItem].gameObject.SetActive(false);
                currentItem = i--;
                items[currentItem].gameObject.SetActive(true);
            }
        }
    }
private void Inventory()
{

for(int i=1;iKeyCode是一个枚举,因此您不能仅仅动态地构建一个与枚举同名的字符串并期望它工作。请改用enum.Parse:

Input.GetKeyDown(Enum.Parse(typeof(KeyCode), numberKey, true));

Parse接受枚举的文本表示形式,并从中生成枚举。因此它基本上是说“返回名称等于numberKey的KeyCode枚举项”。结尾的布尔值告诉它不区分大小写。

您可以尝试在Enum和int之间强制转换:

        int Alpha0Key = (int)KeyCode.Alpha0;

        for (int i = 0; i < items.Count; i++)
        {
            if (Input.GetKeyDown((KeyCode)(Alpha0Key+i))
            {
                items[currentItem].gameObject.SetActive(false);
                currentItem = i;
                items[currentItem].gameObject.SetActive(true);
            }
        }
intalpha0key=(int)KeyCode.Alpha0;
对于(int i=0;i