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);
}
}
}

KeyCode是一个枚举,所以你不能只是动态地构建一个与枚举同名的字符串,并期望它能工作。而是使用Enum。解析:

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

枚举。Parse获取枚举的文本表示形式,并从中生成枚举。也就是说返回KeyCode枚举条目其中名称等于numberkey结尾的布尔值告诉它不区分大小写。

你可以尝试在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);
}
}

最新更新