Signals
A signal is Godot's way to implement the observer pattern (on gameprogrammingpatterns.com).
Refs: Signal basics Signal Class
class_name player extends Node
# here are two signals
signal health_changed
signal health_depleted
var health = 20
func take_damage(amount):
var old_health = health
health -= amount
# We emit the health_changed signal every time the
# character takes damage.
health_changed.emit(old_health, health)
if health<1:
health_depleted.emit()
Nodes can subscribe to signals and are notified when the signal is emitted:
# game.gd
func _ready():
var character_node = get_node('player')
character_node.health_depleted.connect(_on_character_health_depleted)
func _on_character_health_depleted():
get_tree().reload_current_scene()
You can emit as many arguments as you want along with a signal.