You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过自定义字符串变量获取对应的Keycode键码值?

问题原因

Keycode.customKey 写法无法生效,核心原因是枚举的成员访问属于编译期静态解析逻辑,customKey是运行时才会赋值的字符串变量,编译器无法在编译阶段将其识别为Keycode下对应名称的枚举成员。

实现方案

通过枚举字符串解析API即可动态根据变量值获取对应键码,优先使用带校验逻辑的Enum.TryParse方法避免无效值导致的运行时报错,示例代码(以Unity引擎的KeyCode枚举为例,其他框架下的KeyCode枚举实现逻辑通用):

using System;
using UnityEngine;

public class KeyBindHandler : MonoBehaviour
{
    private string customKey = "A";

    void Update()
    {
        // 传入字符串、是否忽略大小写、输出解析结果
        if (Enum.TryParse<KeyCode>(customKey, true, out KeyCode targetKey))
        {
            // 解析得到的targetKey就是KeyCode.A,可直接用于输入检测等业务逻辑
            if (Input.GetKeyDown(targetKey))
            {
                Debug.Log("对应按键被按下");
            }
        }
        else
        {
            Debug.LogError($"配置的键名无效,不存在对应KeyCode:{customKey}");
        }
    }
}
注意事项
  • 不推荐直接使用Enum.Parse,当传入不存在的键名字符串时会直接抛出运行时异常,TryParse会通过布尔返回值标识解析结果,容错性更高
  • 如果需要严格匹配枚举成员名的大小写,将TryParse的第二个参数ignoreCase设置为false即可
  • 传入的字符串需要和KeyCode枚举的成员名完全一致,例如要获取主键盘数字键1的键码,customKey的取值需要为"Alpha1",而非"1"

内容的提问来源于stack exchange,提问作者Hisoi S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:45:38