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.
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.
Dans Godot, une ressource peut être sauvegardée de deux manières différentes :
.tscn). Elle fait partie
intégrante de la scène et n’existe pas en tant que fichier séparé..tres, .res ou
autres).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.
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 :
Make Unique : dans l’inspecteur, cliquez sur la flèche à côté de la ressource et sélectionnez “Make Unique”. Cela créera une copie indépendante de la ressource lors de l’édition.
Local to Scene : cochez l’option “Local to
Scene” dans les propriétés de la ressource. Cette option résout un
problème différent : elle garantit que chaque instance de scène obtienne
automatiquement sa propre copie de la ressource à l’exécution. Par
exemple, si vous avez un script qui modifie dynamiquement la taille
d’une RectangleShape2D pendant le jeu (pour un personnage
qui grandit ou rétrécit), sans “Local to Scene”, toutes les instances de
la scène partageraient la même forme de collision et les modifications
affecteraient tous les objets en même temps. Avec “Local to Scene”,
chaque instance garde sa propre forme de collision
indépendante.
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.
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: intLes ressources “custom” peuvent être considérées comme
analogues aux ScriptableObjects
d’Unity.