首先注册输入事件以了解鼠标按钮是否被按下或释放。
var pressed = false
func _input(event):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
pressed = event.pressed
另一种检查鼠标按钮状态的方法是将 Action 添加到 Input Map(在 Project Settings 中)并添加 Mouse按钮 到Action 的键列表。然后你可以检查它
var pressed = Input.is_action_pressed("MyMouseCliskAction")
其次,连接回调注册Button节点的mouse_entered和mouse_exited信号。
var mouseIsOverButton = false
...
button.connect("mouse_entered", self, "_on_mouse_entered")
button.connect("mouse_exited", self, "_on_mouse_exited")
...
func _on_mouse_entered():
mouseIsOverButton = true
func _on_mouse_exited():
mouseIsOverButton = false
mouse_exited 信号所描述的问题仅在鼠标按钮在按钮区域内被按下并且直到光标离开按钮区域时才释放时才会发生。 is_hovered() 可能是检查 Button 控件的更方便的方法,但它只是上面代码的快捷方式,并且具有相同的描述问题。
如果你想解决这个问题,你可以使用Button 节点的CanvasItem.get_local_mouse_position()(或get_global_mouse_position())方法,然后手动检查位置是否在按钮的矩形内:
var pos = button.get_local_mouse_position()
var rect = Rect2(button.rect_position, button.rect_size)
var mouseIsOverButton = rect.has_point(pos)