首页 > 解决方案 > C#“KeyCode”不包含“numberKey”的定义

问题描述

我试图从制作几个不同的“if 语句”中获得捷径。相反,我只更改一个由 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);
            }
        }
    }

标签: c#variables

解决方案


KeyCode 是一个枚举,因此您不能只是动态地构建一个与枚举同名的字符串并期望它能够工作。而是使用 Enum.Parse:

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

Enum.Parse 采用 Enum 的文本表示并从中生成枚举。所以它基本上是说“返回名称等于 numberKey 的 KeyCode 枚举条目” 最后的布尔值告诉它不区分大小写。


推荐阅读