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

Unity随机单词打字检测:字符转KeyCode问题求助

解决Unity中字符转KeyCode及按键检测问题

方法一:把字符转成KeyCode枚举

首先修正你代码里的拼写错误——Keycode要改成KeyCode(大写C),这是基础错误。之后可以用Enum.Parse实现字符到KeyCode的转换,注意统一字符的大小写,因为KeyCode枚举的命名都是大写(比如KeyCode.A):

// 修正笔误:wordArray应该是typingWords吧?
string currentWord = typingWords[Random.Range(0, typingWords.Length)];
char[] wordAsArray = currentWord.ToCharArray();
// 把目标字符转成大写,匹配KeyCode的命名规则
char targetChar = char.ToUpper(wordAsArray[0]);

try
{
    KeyCode currentLetter = (KeyCode)Enum.Parse(typeof(KeyCode), targetChar.ToString());
    if (Input.GetKey(currentLetter))
    {
        Debug.Log("Test");
    }
}
catch (ArgumentException)
{
    // 碰到数字、符号这类没法转成KeyCode的字符时,打个警告
    Debug.LogWarning($"字符 {targetChar} 无法转换为KeyCode");
}

注意:如果单词里包含非字母字符(比如数字、标点),转换会失败,所以一定要加try-catch做异常处理,或者提前过滤这类字符。

方法二:直接检测输入字符(更推荐)

不用折腾KeyCode转换,直接用Input.inputString获取用户当前帧输入的字符,这种方式更灵活,还能兼容输入法:

string currentWord = typingWords[Random.Range(0, typingWords.Length)];
char targetChar = currentWord[0];

// 遍历当前帧输入的所有字符
foreach (char c in Input.inputString)
{
    // 可选忽略大小写,或者严格匹配,看需求调整
    if (char.ToLower(c) == char.ToLower(targetChar))
    {
        Debug.Log("Test");
        // 这里可以添加后续逻辑,比如切换到下一个需要输入的字符
        break;
    }
}

这种方法的优势:不用处理KeyCode的转换问题,支持大小写不敏感检测,还能适配用户用输入法输入英文的场景,比转KeyCode的方式更稳定。

内容的提问来源于stack exchange,提问作者Asa Draper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:15