Hi!
First, I think my current problem should be more or less typical. And I have some ideas. But I need an advice on which path to choose.
Here's how my remote tree looks:

CharacterBody2Ds are game units, multiple copies of the same BaseUnit.
The Canvas Layer contains HUD: on-screen-panels that move with camera. Inside HUD there are buttons that have their pressed signals connected to units (ability buttons basically).
And GameSpace contains code to select units with a box RTS-style:
func _process(delta: float) -> void:
#Tracking LMB for selection purposes
if Input.is_action_just_pressed("mouseLeft"):
startPoint = get_local_mouse_position()
if Input.is_action_just_released("mouseLeft"):
select_unit(get_local_mouse_position())
But when I click a Button, this counts as a click, of course.
So... I have this couple of ideas:
Check that mouse pointer is not inside areas covered by HUD in the above function on every left click. Seems dumb and complicated, and needs support, but should work I think...
Somehow rearrange the scene so that units are all children of the HUD, so that Button could stop the input event from going down?... Seems an even dumber decision. Also I will have to attach HUD to the camera somehow...
Add some code to buttons that kinda 'stops' select_unit() from working?..
Or is there maybe an easier solution to this that I missed due to the lack of experience?..