Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Resource

Hérite de : RefCounted < Object

Hérité par : Animation, AnimationLibrary, AnimationNode, AnimationNodeStateMachinePlayback, AnimationNodeStateMachineTransition, AudioBusLayout, AudioEffect, AudioStream, BitMap, BoneMap, ButtonGroup, CameraAttributes, ColorPalette, Compositor, CompositorEffect, CryptoKey, Curve, Curve2D, Curve3D, EditorNode3DGizmoPlugin, EditorSettings, Environment, FoldableGroup, Font, GDExtension, GLTFAccessor, GLTFAnimation, GLTFBufferView, GLTFCamera, GLTFDocument, GLTFDocumentExtension, GLTFLight, GLTFMesh, GLTFNode, GLTFPhysicsBody, GLTFPhysicsShape, GLTFSkeleton, GLTFSkin, GLTFSpecGloss, GLTFState, GLTFTexture, GLTFTextureSampler, Gradient, Image, ImporterMesh, InputEvent, JointLimitation3D, JSON, LabelSettings, LightmapGIData, Material, Mesh, MeshLibrary, MissingResource, MultiMesh, NavigationMesh, NavigationMeshSourceGeometryData2D, NavigationMeshSourceGeometryData3D, NavigationPolygon, Noise, Occluder3D, OccluderPolygon2D, OggPacketSequence, OpenXRAction, OpenXRActionMap, OpenXRActionSet, OpenXRBindingModifier, OpenXRHapticBase, OpenXRInteractionProfile, OpenXRIPBinding, PackedDataContainer, PackedScene, PhysicsMaterial, PolygonPathFinder, RDShaderFile, RDShaderSPIRV, RichTextEffect, SceneReplicationConfig, Script, Shader, ShaderInclude, Shape2D, Shape3D, Shortcut, SkeletonModification2D, SkeletonModificationStack2D, SkeletonProfile, Skin, Sky, SpriteFrames, StyleBox, SyntaxHighlighter, Texture, Theme, TileMapPattern, TileSet, TileSetSource, Translation, VideoStream, VideoStreamPlayback, VisualShaderNode, VoxelGIData, World2D, World3D, X509Certificate

Classe de base pour les objets sérialisables.

Description

Les ressources sont la classe de base pour tous les types de ressources propres à Godot, servant principalement comme conteneurs de données. Comme ils héritent de RefCounted, les ressources ont un compteur de références et sont libérées lorsqu'elles ne sont plus utilisées. Elles peuvent également être imbriquées dans d'autres ressources, et sauvegardées sur le disque. PackedScene, l'un des Object le plus courant dans un projet Godot, est également une ressource, uniquement capable de stocker et d'instancier les Nodes qu'elle contient autant de fois que désiré.

En GDScript, les ressources peuvent être chargées à partir du disque par leur chemin resource_path en utilisant @GDScript.load() ou @GDScript.preload().

Le moteur conserve un cache globale de toutes les ressources chargées, référencées par des chemins (voir ResourceLoader.has_cached()). Une ressource sera mise en cache lorsqu'elle est chargée pour la première fois et retirée du cache une fois toutes les références libérées. Lorsqu'une ressource est mise en cache, les chargements subséquents utilisant son chemin renverront la référence en cache.

Note : En C#, les ressources ne seront pas libérées instantanément après qu'elles ne soient plus utilisées. Au lieu de cela, le ramasse-miette s'exécutera périodiquement et libérera les ressources qui ne sont plus utilisées. Cela signifie que les objets ressources utilisées resteront en mémoire pendant un certain temps avant d'être supprimées.

Tutoriels

Propriétés

bool

resource_local_to_scene

false

String

resource_name

""

String

resource_path

""

String

resource_scene_unique_id

Méthodes

RID

_get_rid() virtual const

void

_reset_state() virtual

void

_set_path_cache(path: String) virtual const

void

_setup_local_to_scene() virtual

Error

copy_from_resource(resource: Resource)

Resource

duplicate(deep: bool = false) const

Resource

duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const

void

emit_changed()

String

generate_scene_unique_id() static

String

get_id_for_path(path: String) const

Node

get_local_scene() const

RID

get_rid() const

bool

is_built_in() const

void

reset_state()

void

set_id_for_path(path: String, id: String)

void

set_path_cache(path: String)

void

setup_local_to_scene()

void

take_over_path(path: String)


Signaux

changed() 🔗

Émis lorsque la ressource change, habituellement lorsque l'une de ses propriétés est modifiée. Voir aussi emit_changed().

Note : Ce signal n'est pas émis automatiquement pour les propriétés de ressources personnalisées. Si nécessaire, un setter doit être créé pour émettre le signal.


setup_local_to_scene_requested() 🔗

Obsolète : This signal is only emitted when the resource is created. Override _setup_local_to_scene() instead.

Émis par une ressource nouvellement dupliquée avec resource_local_to_scene défini à true.


Énumérations

enum DeepDuplicateMode: 🔗

DeepDuplicateMode DEEP_DUPLICATE_NONE = 0

No subresources at all are duplicated. This is useful even in a deep duplication to have all the arrays and dictionaries duplicated but still pointing to the original resources.

DeepDuplicateMode DEEP_DUPLICATE_INTERNAL = 1

Seules les sous-ressources sans chemin ou avec un chemin local à la scène seront dupliquées.

DeepDuplicateMode DEEP_DUPLICATE_ALL = 2

Chaque sous-ressource trouvée sera dupliquée, même si elle a un chemin non local. En d'autres termes, même les potentiellement grandes ressources stockées séparément seront dupliquées.


Descriptions des propriétés

bool resource_local_to_scene = false 🔗

  • void set_local_to_scene(value: bool)

  • bool is_local_to_scene()

Si true, la ressource est dupliquée pour chaque instance de toutes les scènes qui l'utilisent. Durant l'exécution, la ressource peut être modifiée dans une scène sans affecter d'autres instances (voir PackedScene.instantiate()).

Note : Modifier cette propriété durant l'exécution n'a aucun effet sur les ressources dupliquées déjà créées.


String resource_name = "" 🔗

Un nom optionnel pour cette ressource. Lorsque définie, sa valeur est affichée pour représenter la ressource dans le dock de l'Inspecteur. Pour les scripts intégrés, le nom est affiché dans le nom de l'onglet dans l'éditeur de script.

Note : Certains formats de ressources ne supportent pas de nom de ressource. Vous pouvez toujours définir le nom dans l'éditeur ou via le code, mais il sera perdu lorsque la ressource est rechargée. Par exemple, seuls les scripts intégrés peuvent avoir un nom de ressource, tandis que les scripts stockés dans des fichiers séparés ne le peuvent pas.


String resource_path = "" 🔗

Le chemin unique vers cette ressource. Si elle a été sauvegardée sur le disque, la valeur sera son chemin de fichier. Si la ressource est exclusivement contenue dans une scène, la valeur sera le chemin de fichier de la PackedScene, suivi d'un identifiant unique.

Note : Définir manuellement cette propriété peut échouer si une ressource avec le même chemin a déjà été chargée précédemment. Si nécessaire, utilisez take_over_path().


String resource_scene_unique_id 🔗

  • void set_scene_unique_id(value: String)

  • String get_scene_unique_id()

A unique identifier relative to this resource's scene. If left empty, the ID is automatically generated when this resource is saved inside a PackedScene. If the resource is not inside a scene, this property is empty by default.

Note: When the PackedScene is saved, if multiple resources in the same scene use the same ID, only the earliest resource in the scene hierarchy keeps the original ID. The other resources are assigned new IDs from generate_scene_unique_id().

Note: Setting this property does not emit the changed signal.

Warning: When setting, the ID must only consist of letters, numbers, and underscores. Otherwise, it will fail and default to a randomly generated ID.


Descriptions des méthodes

RID _get_rid() virtual const 🔗

Redéfinissez cette méthode pour renvoyer un RID personnalisé lorsque get_rid() est appelée.


void _reset_state() virtual 🔗

For resources that store state in non-exported properties, such as via Object._validate_property() or Object._get_property_list(), this method must be implemented to clear them.


void _set_path_cache(path: String) virtual const 🔗

Redéfinissez cette méthode pour exécuter de la logique supplémentaire après que set_path_cache() soit appelée sur cet objet.


void _setup_local_to_scene() virtual 🔗

Redéfinissez cette méthode pour personnaliser la ressource nouvellement dupliquée créée à partir de PackedScene.instantiate(), si le resource_local_to_scene de l'original est défini à true.

Exemple : Définir une valeur aléatoire degats à chaque ressource locale depuis une scène instanciée :

extends Resource

var degats = 0

func _setup_local_to_scene():
    degats = randi_range(10, 40)

Error copy_from_resource(resource: Resource) 🔗

Copies the data from resource into this resource. Both resources must share the same class.


Resource duplicate(deep: bool = false) const 🔗

Doublons cette ressource, renvoyant une nouvelle ressource avec ses propriétés exportées ou @GlobalScope.PROPERTY_USAGE_STORAGE copiées de l'original.

Si deep vaut false, une copie superficielle est renvoyée : les propriétés Array, Dictionary et Resource imbriquées ne sont pas dupliquées et sont partagées avec la ressource originale.

Si deep vaut true, une copie profonde est renvoyée : tous les tableaux, dictionnaires et tableaux imbriquées sont également dupliqués (récursivement). Toute Resource trouvée à l'intérieur ne sera dupliquée que si elle est locale, comme pour DEEP_DUPLICATE_INTERNAL utilisé avec duplicate_deep().

Les exceptions suivantes s'appliquent :

Note : Pour les ressources personnalisées, cette méthode échouera si Object._init() a été défini avec les paramètres requis.

Note : Lors de la duplication avec deep défini à true, chaque ressource trouvée, y compris celle sur laquelle cette méthode est appelée, ne sera dupliquée qu'une fois et référencée autant de fois que nécessaire dans le duplicata. Par exemple, si vous dupliquez la ressource A qui se trouve avoir la ressource B référencée deux fois, vous obtiendrez une nouvelle ressource A' référençant une nouvelle ressource B' deux fois.


Resource duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const 🔗

Duplicates this resource, deeply, like duplicate() when passing true, with extra control over how subresources are handled.


void emit_changed() 🔗

Émet le signal changed. Cette méthode est appelée automatiquement pour certaines ressources intégrées.

Note : Pour les ressources personnalisées, il est recommandé d'appeler cette méthode lorsqu'un changement significatif se produit, comme une propriété modifiée. Cela garantit que les Objects personnalisés dépendant de la ressource sont correctement mis à jour.

var degats:
    set(nouvelle_valeur):
        if degats!= nouvelle_valeur:
            degats = nouvelle_valeur
            emit_changed()

String generate_scene_unique_id() static 🔗

Génère un identifiant unique pour une ressource qui doit être contenue dans une PackedScene, en fonction de la date, de l'heure et d'une valeur aléatoire. La chaîne renvoyée n'est composée que de lettres (a à y) et de nombres (0 à 8). Voir aussi resource_scene_unique_id.


String get_id_for_path(path: String) const 🔗

From the internal cache for scene-unique IDs, returns the ID of this resource for the scene at path. If there is no entry, an empty string is returned. Useful to keep scene-unique IDs the same when implementing a VCS-friendly custom resource format by extending ResourceFormatLoader and ResourceFormatSaver.

Note: This method is only implemented when running in an editor context. At runtime, it returns an empty string.


Node get_local_scene() const 🔗

Si resource_local_to_scene est défini à true et que la ressource a été chargée à partir d'un instanciation de PackedScene, renvoie le Node racine de la scène où cette ressource est utilisée. Sinon, renvoie null.


RID get_rid() const 🔗

Renvoie le RID de cette ressource (ou un RID vide). De nombreuses ressources (comme Texture2D, Mesh, etc.) sont des abstractions de haut niveau de ressources stockées dans un serveur spécialisé (DisplayServer, RenderingServer, etc.), cette fonction renverra donc le RID original.


bool is_built_in() const 🔗

Renvoie true si la ressource est sauvegardée sur le disque dans le fichier d'une autre ressource.


void reset_state() 🔗

Fait que la ressource vide ses propriétés non exportées. Voir aussi _reset_state(). Utile lors de l'implémentation d'un format de ressource personnalisé en étendant ResourceFormatLoader et ResourceFormatSaver.


void set_id_for_path(path: String, id: String) 🔗

In the internal cache for scene-unique IDs, sets the ID of this resource to id for the scene at path. If id is empty, the cache entry for path is cleared. Useful to keep scene-unique IDs the same when implementing a VCS-friendly custom resource format by extending ResourceFormatLoader and ResourceFormatSaver.

Note: This method is only implemented when running in an editor context.


void set_path_cache(path: String) 🔗

Définit le chemin de la ressource à path sans impliquer le cache des ressources. Utile pour gérer les valeurs de CacheMode lors de l'implémentation d'un format de ressource personnalisée en étendant ResourceFormatLoader et ResourceFormatSaver.


void setup_local_to_scene() 🔗

Obsolète : This method should only be called internally.

Appelle _setup_local_to_scene(). Si resource_local_to_scene est défini à true, cette méthode est automatiquement appelée depuis PackedScene.instantiate() par la ressource nouvellement dupliquée dans l'instance de la scène.


void take_over_path(path: String) 🔗

Définit resource_path à path, redéfinissant potentiellement une entrée existante du cache pour ce chemin. Les prochaines tentatives pour charger une ressource redéfinie par chemin renverront à la place cette ressource.