# Unreal - 传统输入 与 增强输入


## ***传统输入***

*想象一下你在做一个《GTA》类的游戏。*

*“上车”后的逻辑地狱*

*在传统输入里，你定义了一个“空格键”叫 Jump。*

- ***步行时**：按空格是跳跃。*
- ***开车时**：你想让空格变成手刹。*
- ***潜水时**：你想让空格变成向上浮。*

***结果：** 你的角色代码里会充斥着这种“逻辑毛线团”：*

> *如果 (在车里) { 执行手刹 }*
>
> *否则如果 (在水里) { w执行上浮 }*
>
> *否则 { 执行跳跃 }*

*这就像老式街机，如果你想把“发射”键改成“确认”键，你得拿烙铁去后台重新接线。线越多，你就越容易把自己绕晕。*

## ***增强输入***

*增强输入把“按键”和“动作”彻底分开了。*

1. *Input Action (IA) —— “功能按钮”*

   *Input Action** 就是技能表里的“轻攻击”、“交互”、“翻滚”。*

   *它不关心你是按了鼠标左键还是手柄的 R1，它只代表一个**动作意图**。*

   - ***例子**：你定义一个 IA_Attack。*
   - ***好处**：无论玩家是在用键盘、PS5 手柄还是方向盘开黑，你的 C++ 代码里只需要监听 IA_Attack 触发了没，而不需要去管玩家到底按了哪个键。*

2. *Input Mapping Context (IMC) —— “技能卡带”*

   *同一个“空格键”，在不同模式下的功能完全不同：*

   1. ***步行模式**：空格键 = **跳跃 (IA_Jump)***
   2. ***驾驶模式**：空格键 = **手刹 (IA_Handbrake)***
   3. ***跳伞模式**：空格键 = **开伞 (IA_OpenParachute)***

   ***怎么玩？***

   - *当玩家**拉开车门**那一刻，你只需要代码里一行 Add Mapping Context (驾驶模式)。*
   - ***神奇的事发生了**：系统会自动把“步行模式”的按键屏蔽掉，同样的物理空格键，现在输出的指令自动变成了“手刹”。*

   ***这就是增强输入的魅力：** 你再也不用在代码里写 if (是在车里) { 手刹 } else { 跳跃 } 这种又臭又长的代码了。*

## ***总结***

| *特性*         | *传统输入 (Legacy)*                    | *增强输入 (Enhanced)*                    |
| -------------- | -------------------------------------- | ---------------------------------------- |
| ***逻辑存储*** | *项目配置文件（全局唯一）*             | *独立的 UAsset（可复用、可动态加载）*    |
| ***状态切换*** | *靠大量的布尔判断（Boolean Overload）* | *靠 Context 的叠加与移除（Layering）*    |
| ***数据处理*** | *在 Tick 或事件中手动计算数学逻辑*     | *资产内置 Modifiers（死区、缩放、反转）* |
| ***手感调节*** | *需要改动功能代码*                     | *在资产配置中调整 Triggers 参数*         |

