概念页
输入系统
Godot Input
Godot 用 InputEvent 统一键鼠触手柄事件,经视口与控件冒泡;推荐 InputMap 把物理键映射为动作名,便于多键绑定与运行时重绑。
原理
- 平台 DisplayServer 采集 → 引擎派发:
_input→ 控件 GUI →_unhandled_input等(具体顺序见官方 InputEvent 文)。 - InputMap:项目设置中定义
jump/move_left等动作,代码用Input.is_action_pressed("jump")。 - 可合成/回放 InputEvent(手势、自动化测试、回放)。
应用
- 玩法逻辑只认动作名;设置菜单改映射。
- UI 焦点与玩法输入冲突时:控件先消费,剩余进
_unhandled_input;或临时切换输入模式。
取舍
- 硬编码键码快但不便本地化与手柄;InputMap 略多配置、换绑成本低。
- UE 对照:InputMap ≈ Enhanced Input 的 Action+Mapping 简化版;Godot 无内建同等「触发器/修饰符图」,复杂手感需自建或插件。
参见
出处
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- docs.godotengine.org/en/stable/tutorials/inputs/inputevent.html
- docs.godotengine.org/en/stable/tutorials/inputs/index.html
相关页面
游戏开发引擎输入系统Game Engine HID System多数引擎不直接使用「原始」HID 输入,而是先加工(死区、滤波)使游戏内行为平滑直观,并在 HID 与游戏之间加至少一层间接(如按键映射表把原始按钮翻译成逻辑游戏动作)。GEA 列出引擎输入系统的典型需求并逐一讲解实现:死区、模拟信号滤波、按下/松开事件、组合键与序列手势、多设备多玩家、跨平台抽象、输入重映射、上下文相关控制与输入禁用。(卷 I 9.5–9.6 节)游戏开发人机接口设备Human Interface Devices人机接口设备 (HID) 是玩家向游戏提供输入、游戏向玩家提供反馈的硬件:手柄、键鼠、摇杆、Wii 遥控器、方向盘、跳舞毯、吉他等。GEA 从三个层面介绍它们:游戏如何与设备通信(轮询、中断、无线协议),设备提供哪几类输入,以及设备能输出哪些反馈。引擎如何加工这些原始输入见 引擎输入系统。(卷 I 9.1–9.4 节)游戏开发 · UE5增强输入Enhanced Input增强输入 (Enhanced Input) 是 UE5 默认启用的输入插件,把输入拆成四层:输入动作 (Input Action) 表示“玩家想做什么”,输入映射上下文 (Input Mapping Context) 规定“哪些按键在什么情境下触发它”,输入修饰器 (Input Modifier) 预处理原始值,输入触发器 (Input Trigger) 判定是否触发。上下文可在运行时按优先级增删,从而用数据资产而非代码处理情境切换、按键冲突与改键。游戏开发 · GodotGodot UI 与 ControlGodot UI & ControlsControl 是 GUI 基类,与 Node2D 同属 CanvasItem。布局优先用容器(Box/Grid/Margin 等)而非手算坐标;主题与类型变体统一皮肤。游戏开发 · Godot节点与场景Nodes & ScenesGodot 把游戏抽象成「场景树」:节点是最小积木,场景是可复用的节点树蓝图;场景可嵌套实例化,同时扮演其他引擎中 Prefab 与关卡的角色。