Un bouton Godot ne répond plus ? Suivez sa connexion de signal
Votre menu Godot s'affiche, le bouton Jouer est visible, mais rien ne se passe au clic. La méthode appelée semble correcte. Avant de la réécrire, suivez la chaîne qui devrait y mener : le bouton émet un événement, une connexion désigne un destinataire, puis celui-ci exécute une méthode.
Ce guide porte sur les connexions de signaux dans Godot 4. Il propose une démarche pour repérer l'étape défaillante et montre comment BranchPy Studio aide à examiner les connexions réparties dans un projet.
1. Vérifiez le bouton réellement utilisé à l'exécution
Reproduisez le problème depuis le même point d'entrée que le joueur. Notez si vous avez lancé le projet entier ou une seule scène. Examinez l'arbre de scène en cours d'exécution dans Godot et confirmez que le bouton visible est bien l'instance attendue.
Avec un ancien menu, un menu de pause et une scène d'interface partagée, on peut facilement examiner un bouton tout en en testant un autre. Notez la scène active et le nœud avant de suivre la méthode appelée.
2. Retrouvez la déclaration de la connexion
Les signaux Godot notifient les méthodes connectées lorsqu'un événement se produit. Vous pouvez les connecter dans l'éditeur ou dans le code. Le tutoriel officiel sur les signaux (en anglais) présente les deux approches.
Pour une connexion créée dans l'éditeur, sélectionnez le bouton et examinez ses connexions de signaux. Pour une connexion créée dans le code, retrouvez l'appel de configuration et vérifiez qu'il s'exécute pour cette instance. Confirmez l'émetteur, le destinataire et le nom de méthode. La présence d'une méthode _on_play_pressed ne prouve pas, à elle seule, que le bouton y est connecté.
Notez explicitement la relation, par exemple « Menu/PlayButton → pressed → Menu._on_play_pressed ». Si le destinataire a été déplacé ou remplacé, vérifiez la connexion dans la nouvelle structure de scène.
3. Examinez les connexions détectées ensemble
Dans BranchPy Studio, la vue Godot Graph View → Signal / Event Map réunit les connexions détectées dans les appels connect() des scripts et les entrées de connexion des fichiers de scène. Les lignes indiquent l'émetteur, la méthode destinataire et l'emplacement source lorsqu'ils sont disponibles.
Recherchez le signal ou la méthode, puis choisissez le regroupement adapté à votre question :
- Signal : examiner les connexions détectées utilisant un nom comme
pressed. - Source : examiner le fichier où les connexions sont déclarées.
- Target : examiner les destinataires détectés.
Un nom comme pressed peut appartenir à de nombreux boutons. Vérifiez aussi l'émetteur et l'emplacement source. Le regroupement Source indique le lieu de déclaration, qui n'est pas nécessairement le script de l'émetteur.
4. Distinguez connexion défaillante et méthode défaillante
Placez un point d'arrêt au début de la méthode attendue dans Godot et reproduisez le clic.
- La méthode est atteinte : suivez son exécution. Examinez les sorties anticipées, les conditions et l'opération tentée.
- La méthode n'est pas atteinte : vérifiez l'instance active, l'exécution de la configuration et la réception de l'interaction par le bouton, puis l'émission de l'événement attendu.
Cette observation oriente la suite de l'enquête. Une ligne de connexion statique ne permet pas de savoir si une entrée a été interceptée, si un nœud a été remplacé ou si une condition à l'exécution a empêché la configuration.
5. Revérifiez le cycle de vie après la correction
Testez plus que le premier clic après le lancement. Ouvrez le menu, quittez-le, revenez et réessayez. Si l'interface est créée dynamiquement, testez aussi le parcours de création qui échouait. Examinez la carte après avoir modifié les connexions, puis confirmez le comportement dans Godot.
Une ligne absente peut correspondre à un mécanisme dynamique que l'analyseur ne sait pas résoudre ; elle ne prouve pas qu'aucune connexion n'existe à l'exécution. Inversement, une connexion détectée décrit un lien déclaré, sans garantir que le destinataire existe encore ou que sa méthode fonctionne. Gardez ces deux vérifications distinctes.
Explorez la démo Godot intégrée à BranchPy Studio pour essayer Signal / Event Map. Pour votre propre projet, consultez les offres compatibles avec Godot. L'analyse lit le projet sans réécrire les fichiers source ; les vérifications à l'exécution restent une étape de votre travail dans Godot.