Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Application des principes orientés objet dans Godot

Le moteur offre deux principaux moyens de créer des objets réutilisables : les scripts et les scènes. Aucun de ces deux moyens ne définit techniquement des classes sous le capot.

Néanmoins, de nombreuses bonnes pratiques d'utilisation de Godot impliquent l'application des principes de la programmation orientée objet aux scripts et aux scènes qui composent votre jeu. C'est pourquoi il est utile de comprendre comment nous pouvons les considérer comme des classes.

Ce guide explique brièvement le fonctionnement des scripts et des scènes dans le noyau du moteur pour vous aider à comprendre comment ils fonctionnent sous le capot.

Comment les scripts fonctionnent dans le moteur

Le moteur fournit des classes intégrées comme Node. Vous pouvez les étendre pour créer des types dérivés à l'aide d'un script.

Ces scripts ne sont pas techniquement des classes. Au lieu de cela, ce sont des ressources qui indiquent au moteur une séquence d’initialisations à effectuer sur l’une des classes intégrées du moteur.

Les classes internes de Godot ont des méthodes qui enregistrent les données d'une classe avec un ClassDB. Cette base de données fournit un accès runtime aux informations de classe. ClassDB contient des informations sur les classes comme :

  • Propriétés.

  • Méthodes.

  • Constantes.

  • Signaux.

Ce ClassDB est ce que les objets vérifient quand ils exécutent une opération comme accéder à une propriété ou appeler une méthode. Il vérifie les enregistrements de la base de données et les enregistrements des types de base de l'objet pour voir si l'objet supporte l'opération.

Attacher un Script à votre objet étend les méthodes, propriétés et signaux disponibles à partir de ClassDB.

Note

Even scripts that don't use the extends keyword implicitly inherit from the engine's base RefCounted class. As a result, you can instantiate scripts without the extends keyword from code. Since they extend RefCounted though, you cannot attach them to a Node.

Les scènes

Le comportement des scènes présente de nombreuses similitudes avec les classes, il peut donc être logique de considérer une scène comme une classe. Les scènes sont des groupes de nœuds réutilisables, instanciables et héritables. Créer une scène est similaire à avoir un script qui crée des nœuds et les ajoute comme des enfants en utilisant add_child().

We often pair a scene with a scripted root node that makes use of the scene's nodes. As such, the script extends the scene by adding behavior through imperative code.

Le contenu d'une scène aide à définir :

  • What nodes are available to the script.

  • How they are organized.

  • How they are initialized.

  • What signal connections they have with each other.

Pourquoi l'organisation de la scène est-elle si importante ? Parce que les instances de scènes sont des objets. Par conséquent, de nombreux principes orientés objet qui s'appliquent au code écrit s'appliquent également aux scènes : responsabilité unique, encapsulation, et autres.

La scène est toujours une extension du script attaché à son noeud racine, vous pouvez donc l'interpréter comme faisant partie d'une classe.

La plupart des techniques expliquées dans cette série de bonnes pratiques s'appuient sur ce point.