首页/ 第 8 章 · 输入系统/ 第 124 课
LESSON 124 · 输入系统

自定义按键与键位映射

自定义按键已掌握。下一课综合练习:场景漫游。

⏱ 约 13 分钟📊 难度:入门🗂 第 8 章 · 输入系统📍 第 124 / 300 课
课程进度
124 / 300

🎯本节学习目标

  • 理解 Input Manager 映射
  • 掌握改键方法
  • 实现运行时改键

🚀课程导读

“玩家想改按键”是常见需求。本课讲清楚 Unity 按键映射的两种改法:配置文件改 & 代码改。

Input Manager 配置改键

在编辑器里改默认映射。

  1. 菜单 Edit → Project Settings → Input Manager(旧版输入)。
  2. 展开 Axes 列表,能看到所有轴(Horizontal、Vertical、Jump 等)。
  3. 选一个轴(如 Jump):展开它的属性。
  4. 【Positive Button】主键(如 “space”);【Alt Positive Button】备用键。
  5. 【Keys 写法】小写键名:space、w、a、s、d、left shift、mouse 0 等。
  6. 把 Jump 的 Positive Button 改成 “j”:以后按 J 也能跳。
  7. 【新建轴】点列表下方 “+” 添加自定义轴(如 Fire),绑定鼠标左键。
  8. 【注意】改配置只影响本项目,换项目需重设。
💡
Input Manager 是“策划配键”的入口,改一次全项目生效。

运行时改键(代码)

让玩家在游戏里改键。

  1. 思路:不用硬编码 KeyCode,改用“可配置的键名”字段。
  2. 方案1:字段存 KeyCode:public KeyCode jumpKey = KeyCode.Space; 判断用 GetKeyDown(jumpKey);改键 = 改字段值(可在设置界面让玩家选)。
  3. 方案2:用一个 Dictionary 存键:Dictionary<string, KeyCode> keyMap; keyMap["Jump"] = KeyCode.Space; 统一查表。
  4. 方案3:新版 Input System 用 SetBindingOverride 改绑定(进阶)。
  5. 【改键 UI】做一个设置界面:玩家点击“改跳跃键”按钮 → 进入“等待按键”状态 → 按下任意键 → 把 KeyCode 存进 keyMap 并保存到 PlayerPrefs(第 232 课)。
  6. 【保存】PlayerPrefs.SetInt("JumpKey", (int)keyMap["Jump"]);启动时读取。
  7. 【注意】按键冲突检测:避免两个动作绑定同一键。
  8. 【推荐】小项目用“字段存 KeyCode + PlayerPrefs 保存”最实用。
改键三要素:可配置字段/字典 + 按键选择 UI + PlayerPrefs 持久化。

常见错误与排查

错误:改键后没生效?
原因:判断里还是硬编码 KeyCode
解决:把判断改成读取可配置键:Input.GetKeyDown(jumpKey)。

动手练习

课后小任务(做出来才算真的学会)

  • 在 Input Manager 里改一个键位并测试
  • 用 KeyCode 字段实现可改键
  • 把改键保存到 PlayerPrefs

本节小结

自定义按键已掌握。下一课综合练习:场景漫游。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课UI 按钮点击响应(输入层)