📦 Les Ressources

Une ressource dans Godot, c’est un conteneur de données. Elle n’a pas de comportement à proprement parler, mais elle est utilisée par les noeuds.

Par exemple les assets, comme les textures, les modèles 3D, les polices de caractères… etc. sont des ressources.

Lorsque vous placez des assets dans votre projet, Godot les importe automatiquement en ressources.

Ces fichiers sont traités et optimisés pour être utilisés efficacement par le moteur. Par exemple, une image PNG importée devient une ressource de type Texture2D, un fichier OBJ devient une Mesh, et ainsi de suite.

Mais le concept de ressource va plus loin que les assets importés : il s’agit d’un système universel pour encapsuler n’importe quel type de données dans Godot.

Par exemple, le noeud de type CollisionShape2D, qui représente une collision pour un objet physique, va contenir une ressource de type Shape2D, qui est donc un conteneur des données d’une forme géométrique.

Utilisation des ressources
📝 Note

Presque tout ce qui est sauvegardé dans votre projet Godot est une ressource. Même les scènes que vous créez sont des ressources de type PackedScene.

Ressources internes et externes

Dans Godot, une ressource peut être sauvegardée de deux manières différentes :

Il est recommandé de sauvegarder une ressource de façon externe dans les cas suivants :

À l’inverse, pour des ressources très spécifiques à une scène ou des petites ressources simples (comme une Shape2D pour un CollisionShape2D), il n’est généralement pas nécessaire de les sauvegarder en tant que fichiers externes.

⚠️ Attention

Vu qu’une ressource peut être partagée par plusieurs noeuds, cela signifie que modifier la ressource affectera tous les noeuds qui l’utilisent. Ce comportement peut être indésirable dans certains cas où vous souhaitez des variations indépendantes.

Il existe deux solutions selon le contexte :

Ressources custom

Au-delà des ressources intégrées dans Godot, vous pouvez créer vos propres types de ressources personnalisées en écrivant des scripts qui héritent de la classe Resource. Ces ressources custom sont particulièrement utiles pour stocker des données de jeu structurées : statistiques de personnages, configurations d’armes, descriptions d’objets, paramètres de génération procédurale, etc.

L’avantage des ressources custom est qu’elles peuvent être créées et éditées directement depuis l’éditeur Godot, sauvegardées sur le disque en tant que fichiers .tres (ou .res en binaire), et facilement partagées entre différents noeuds ou scènes. De plus, elles bénéficient du système de sérialisation de Godot, ce qui facilite la sauvegarde et le chargement des données.

🔥 Exemple

Voici un exemple simple de ressource custom, représentant un item.

class_name Item
extends Resource

@export var name: String
@export var description: String
@export var icon: Texture2D
@export var price: int
📝 Note

Les ressources “custom” peuvent être considérées comme analogues aux ScriptableObjects d’Unity.