Unity技术问题:如何用变量实现按键码动态切换
解决方案
直接用KeyCode枚举类型存储按键变量和数组即可,这是Unity输入系统原生支持的类型,无需额外做字符串转枚举的操作。
修改后的代码示例:
public class Flop : MonoBehaviour { // 定义KeyCode类型的按键数组,对应你原本指定的键盘按键 private KeyCode[] DirF = new KeyCode[] { KeyCode.R, KeyCode.F, KeyCode.V, KeyCode.T, KeyCode.G, KeyCode.B, KeyCode.Y, KeyCode.H, KeyCode.U }; // 用KeyCode类型存储当前生效的按键,初始化为Y键 private KeyCode keyF = KeyCode.Y; void Update() { // 直接将keyF变量传入GetKeyDown方法 if (Input.GetKeyDown(keyF)) { // 执行翻转/跳跃逻辑 PerformFlop(); // 随机切换到新按键(可选:用do-while避免连续重复当前按键) do { keyF = DirF[Random.Range(0, DirF.Length)]; } while (keyF == DirF[Array.IndexOf(DirF, keyF)]); // 不需要避免重复的话,直接写 keyF = DirF[Random.Range(0, DirF.Length)]; 即可 } } void PerformFlop() { // 这里编写你的翻转/跳跃具体逻辑 Debug.Log("触发翻转操作!"); } }
关键修改说明:
- 把原字符串数组
DirF替换为KeyCode枚举数组,每个元素对应Unity内置的键盘按键枚举值(比如KeyCode.R对应键盘R键)。 - 将
keyF变量类型从string改为KeyCode,这样可以直接作为Input.GetKeyDown()的参数,省去类型转换的麻烦。 - 按键切换逻辑用
Random.Range从数组中随机选取新按键,可选的do-while循环能避免连续两次使用同一个按键,强化游戏的“抓狂”体验。
内容的提问来源于stack exchange,提问作者Nicole Shrader
相关产品推荐
相关产品推荐

