Connecter un signal via le code

Une autre méthode existe pour connecter les signaux depuis le code au lieu d’utiliser l’éditeur. C’est bien de l’expérimenter si des noeuds et instances sont créées directement, à l’intérieur d’un script.

Cet exemple utilise un nœud Timer qui est utile pour implémenter des temps de recharge d’une compétence, le rechargement d’une arme, etc.

  1. Garder le fichier de l’étape précédente. Revenir à l’espace de travail 2D en activant son onglet.

  2. Dans le panneau Scène, faîtes un clic-droit sur le nœud Sprite2D et ajouter un nouveau nœud. Recherchez Timer et ajoutez le nœud correspondant. Votre scène devrait maintenant ressembler à cela.

    Capture d’écran 2026-10-12 à 14.10.02

  3. Avec le nœud Timer sélectionné, allez dans l’Inspecteur et cocher la propriété Autostart.

  4. Cliquez sur l’icône de scriptCapture d’écran 2026-10-12 à 14.11.37à côté de Sprite2D pour revenir à l’espace de travail de script.

    Capture d’écran 2026-10-12 à 14.11.29

    Capture d’écran 2026-10-12 à 14.12.26

  5. Pour connecter un nœud via le code :

    Nous voulons connecter the signal lorsque la scène est instanciée, pour celà nous pouvons utiliser la fonction intégrée Node._ready() qui est appelée automatiquement par le moteur lorsqu’un nœud est complètement instancié.

    Pour obtenir une référence vers un nœud relatif au nœud actuel, nous utilisons la méthode Node.get_node(). Nous pouvons stocker la référence dans une variable.

    il faut appeler la méthode connect() du nœud pour écouter les signaux d’un nœud : ici le signal timeout du Timer. En rajoutant ces lignes :

    func _ready():
     var timer = get_node(« Timer »)

    Capture d’écran 2026-10-12 à 14.12.26

  6. func _ready():
     var timer = get_node(« Timer »)

    Ajouter :connectons le signal timeout du Timer au nœud auquel le script est attaché. Lorsque le Timer émet timeout, nous voulons appeler la fonction _on_timer_timeout(), que nous devons définir. Ajoutons-la au bas de notre script et utilisons-la pour basculer la visibilité de notre sprite.

    func_on_timer_timeout():
     visible=notvisible
  7. Nous pouvons maintenant connecter le Timer au Sprite2D dans la fonction _ready().

    func _ready():
        var timer = get_node("Timer")
        timer.timeout.connect(_on_timer_timeout)

Exécuter la scène. Le sprite clignote à des intervalles d’une seconde.

Script complet :

extends Sprite2D
var speed = 400
var angular_speed = PI
func _ready():
    var timer = get_node("Timer")
    timer.timeout.connect(_on_timer_timeout)
func _process(delta):
    rotation += angular_speed * delta
    var velocity = Vector2.UP.rotated(rotation) * speed
    position += velocity * delta
func _on_button_pressed():
    set_process(not is_processing())
func _on_timer_timeout():
    visible = not visible
Remarques
  • La fonction get_node() regarde les enfants du Sprite2D et récupère les nœuds par leur nom. Par exemple, si vous renommez le nœud Timer en BlinkingTimer dans l’éditeur, vous devrez changer l’appel en get_node(BlinkingTimer).

  • Par convention, nous nommons ces méthodes de rappel dans GDScript comme _on_node_name_signal_name et en C# comme OnNodeNameSignalName. Ici, ce sera _on_timer_timeout pour GDScript et OnTimerTimeout() pour C#.

  • La ligne se lit ainsi : nous connectons le signal timeout du Timer au

  • La propriété visible est un booléen qui contrôle la visibilité de notre nœud. La ligne visible = not visible inverse la valeur. Si visible est true, il devient false, et vice-versa.