序
在最新的Unity版本中,官方推荐用InputSystem取代传统的输入,所以本文主要介绍InputSystem的使用。
前期工作
在最新的Unity版本中已经启用了InputSystem,部分旧版则要自己手动安装并启用


总体介绍
特性  | 旧输入系统(Input Manager)  | 新输入系统(Input System Package)  | 
|---|
支持多设备  | 基本(鼠标、键盘、手柄)  | ✅ 全面支持(键盘、鼠标、手柄、触控、陀螺仪等)  | 
多人本地输入(本地多玩家)  | ❌ 不支持  | ✅ 内建支持,区分不同玩家的设备  | 
输入设备热插拔  | ❌ 不支持  | ✅ 自动识别插拔设备  | 
自定义映射/重绑定  | 手动写代码实现  | ✅ 内建支持运行时重绑定  | 
输入事件(按下、抬起等)  | ❌ 基于轮询  | ✅ 支持事件驱动,响应更及时  | 
可视化编辑器支持  | ❌ 配置很原始(硬编码字符串)  | ✅ 提供 Input Actions 可视化配置工具  | 
模块化架构  | ❌ 单一系统  | ✅ 架构分层、模块化强,适合大型项目  | 
支持输入模拟与测试  | ❌ 手动写代码  | ✅ 支持通过代码模拟输入,便于自动化测试  | 
移动/控制台平台支持  | ✅ 基础支持  | ✅ 更完整,未来更优先适配  | 
省流:通过InputAction,实现按键绑定,并且与实际功能分离

Action Maps
Action Map是许多Actions的集合,每个Map是一个独立的分组,之间互不干扰
Actions
Action中存储着按键绑定,Action可以有许多类型