「Godot」输入处理

名称类型触发时机适用场景
_input(event)回调函数(每个节点都可实现)输入事件产生时,最优先收到捕捉所有输入、调试、全局监听、快捷键
_gui_input(event)回调函数(Control节点专属)输入事件传递到UI控件时按钮点击、滑动、拖动等UI行为
_unhandled_input(event)回调函数(每个节点都可实现)控件未处理时触发玩家控制输入:跳跃、移动、攻击
_input_event()回调函数(CollisionObject2D)鼠标交互时检测物体被点击、悬停、拖拽等
Input.is_action_pressed()主动调用(Input单例)任意时刻,每帧可调用移动、射击、持续检测
Input.is_action_just_pressed()主动调用(Input单例)任意时刻,按下瞬间跳跃、攻击等一次性行为
  • 回调函数触发优先级从上往下逐级降低
  • 屏蔽_input回调函数,可以使用set_process_input(false)
  • 使用get_viewport().set_input_as_handled()来阻止事件向上传递
  • 节点回调函数触发顺序:从下往上、从子节点往父节点
  • 节点属性检查器中:Mouse-Filter中可以设置过滤类型
    • Stop停止传递
    • Pass穿透传递(UI控件重叠时)
    • Ignore忽略

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注