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
相关产品推荐
相关产品推荐

