c# - 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.Parse:
Input.GetKeyDown(Enum.Parse(typeof(KeyCode), numberKey, true));
Enum.Parse 采用 Enum 的文本表示并从中生成枚举。所以它基本上是说“返回名称等于 numberKey 的 KeyCode 枚举条目” 最后的布尔值告诉它不区分大小写。
推荐阅读
- angular - 如何部署在 Node 中创建的 SaS 应用程序作为后端和 Angular 作为前端
- r - R唯一命令和表命令不一致
- typescript - 缩小作为 keyof 类型的泛型类型而不指定泛型参数
- javascript - React-native 无法渲染任何数据,
- spring-boot - 如何在 Spring Boot 应用程序内部扫描注释以及后处理器如何工作?
- java - 如何在我创建的目录中创建文本文件(Android 外部存储)
- java - 如何从存储为文件的 Parse-server 加载图像并使用 Java 将其显示到 Android-Studio 中的自定义 ListView?
- python - 斐波那契数列/数动态规划
- reactjs - state' 未在 App.js 文件中定义 no-undef
- c# - 使用 Raycast 代替 Gaze Pointer