如何在不修改节点层级时调整_unhandled_key_input的调用顺序?
解决Godot 3.5中_unhandled_key_input调用顺序问题
首先明确:process_priority仅控制_process、_physics_process这类帧更新回调的执行顺序,对_unhandled_key_input这类输入事件回调完全无效,这就是你调整它没效果的原因。
要在不修改节点层级的前提下改变_unhandled_key_input的调用顺序,可使用Godot专门提供的输入优先级设置方法:
- 在节点A的脚本中添加
_ready函数,设置更高的未处理输入优先级:
extends Node2D func _ready(): # 优先级数值越高,_unhandled_key_input越先被调用,默认值为0 set_process_unhandled_input_priority(10) func _unhandled_key_input(event): print(self," _unhandled_key_input")
节点B保持默认优先级即可。此时按下按键,A的_unhandled_key_input会先触发,输出顺序将变为A在前、B在后。
原理:Godot 3.5中,set_process_unhandled_input_priority是专门用于调整_unhandled_input和_unhandled_key_input执行顺序的API,优先级数值更高的节点会优先收到回调。
内容的提问来源于stack exchange,提问作者cak3_lover
相关产品推荐
相关产品推荐

