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