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

新版 Input System 配置入门

新版输入已入门。下一课实现完整的角色移动脚本。

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

🎯本节学习目标

  • 理解 Input Actions 结构
  • 掌握创建与绑定
  • 掌握回调写法

🚀课程导读

新版输入系统用“输入动作资产”把“抽象动作”(移动/跳跃)与“具体按键”(WASD/手柄摇杆)解耦。本课入门。

Input Actions 资产

先创建动作资产。

  1. 确认已启用 Input System(第 115 课,建议 Both)。
  2. 在 Project 右键 → Create → Input Actions,命名 PlayerControls。
  3. 双击打开资产编辑窗口(Input Actions Editor)。
  4. 【Action Maps 动作映射】左侧可建多个映射:如“Gameplay”“UI”,分别装不同动作。
  5. 【Actions 动作】在映射里建动作:右键 → Add Action,如 Move(Vector2 类型)、Jump(Button 类型)。
  6. 【Properties】右侧设置动作类型:Value(连续值,如摇杆)、Button(按钮)、Pass-Through。
  7. 【Bindings 绑定】选中动作 → 点 + 号添加绑定:如 Move 绑定 WASD/摇杆(自动有 Keyboard 和 Gamepad 默认模板)。
  8. 保存资产(Ctrl+S)。
💡
动作资产把“逻辑动作”与“具体按键”分离:换平台/改键不改代码,只改资产。

代码中读取输入

用 PlayerInput 或生成类。

  1. 【方式1 PlayerInput 组件】给对象加 PlayerInput 组件,资产选 PlayerControls,默认行为模式设“Invoke Unity Events”。
  2. 在资产编辑器里给动作添加“响应行为”(Response Behavior):在动作上右键 → Add Binding… 复杂,官方推荐生成 C# 类。
  3. 【方式2 生成 C# 类(推荐)】在资产编辑器右上角点【Generate C# Class】,勾选,保存后生成 PlayerControls.cs。
  4. 然后在脚本里:
  5. PlayerControls controls;
  6. void Awake() { controls = new PlayerControls(); }
  7. void OnEnable() { controls.Gameplay.Enable(); }
  8. void OnDisable() { controls.Gameplay.Disable(); }
  9. 读取移动:Vector2 move = controls.Gameplay.Move.ReadValue<Vector2>();
  10. 跳跃事件:controls.Gameplay.Jump.performed += ctx => Jump();
  11. 【要点】Enable/Disable 控制映射生效;performed 在按下瞬间回调。
  12. 【进阶】还可以用 SetBindingOverride 改键(运行时改键)。
新版输入:动作资产定义“做什么” → 绑定定义“用什么” → C# 生成类读取/回调。

常见错误与排查

错误:生成 C# 类按钮找不到?
原因:版本差异或没点开资产编辑器右上角
解决:在 Input Actions 编辑器右上角(... 菜单)里找 Generate C# Class;或升级包版本。

动手练习

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

  • 创建 PlayerControls 输入资产
  • 配置 Move(Vector2)与 Jump(Button)动作
  • 生成 C# 类并在脚本中读取移动与跳跃

本节小结

新版输入已入门。下一课实现完整的角色移动脚本。

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

← 上一课新旧输入系统对比与迁移