Resource

Inherits: Reference < Object

Inherited By: Animation, AnimationNode, AnimationNodeStateMachinePlayback, AnimationNodeStateMachineTransition, AudioBusLayout, AudioEffect, AudioStream, BakedLightmapData, BitMap, ButtonGroup, CryptoKey, CubeMap, Curve, Curve2D, Curve3D, DynamicFontData, EditorSettings, EditorSpatialGizmoPlugin, Environment, Font, GDNativeLibrary, GIProbeData, Gradient, Image, InputEvent, Material, Mesh, MeshLibrary, MultiMesh, NavigationMesh, NavigationPolygon, OccluderPolygon2D, OpenSimplexNoise, PackedDataContainer, PackedScene, PhysicsMaterial, PolygonPathFinder, RichTextEffect, Script, Shader, Shape, Shape2D, ShortCut, Skin, Sky, SpriteFrames, StyleBox, TextFile, Texture, TextureLayered, Theme, TileSet, Translation, VideoStream, VisualScriptNode, VisualShaderNode, World, World2D, X509Certificate

Base class for all resources.

Description

Resource is the base class for all Godot-specific resource types, serving primarily as data containers. Unlike Objects, they are reference-counted and freed when no longer in use. They are also cached once loaded from disk, so that any further attempts to load a resource from a given path will return the same reference (all this in contrast to a Node, which is not reference-counted and can be instanced from disk as many times as desired). Resources can be saved externally on disk or bundled into another object, such as a Node or another resource.

Note: In C#, resources will not be freed instantly after they are no longer in use. Instead, garbage collection will run periodically and will free resources that are no longer in use. This means that unused resources will linger on for a while before being removed.

Tutorials

Properties

boolresource_local_to_scenefalse
Stringresource_name“”
Stringresource_path“”

Methods

void_setup_local_to_scene ( ) virtual
Resourceduplicate ( bool subresources=false ) const
Nodeget_local_scene ( ) const
RIDget_rid ( ) const
voidsetup_local_to_scene ( )
voidtake_over_path ( String path )

Signals

  • changed ( )

Emitted whenever the resource changes.

Note: This signal is not emitted automatically for custom resources, which means that you need to create a setter and emit the signal yourself.

Property Descriptions

  • bool resource_local_to_scene
Defaultfalse
Setterset_local_to_scene(value)
Getteris_local_to_scene()

If true, the resource will be made unique in each instance of its local scene. It can thus be modified in a scene instance without impacting other instances of that same scene.


Default“”
Setterset_name(value)
Getterget_name()

The name of the resource. This is an optional identifier.


Default“”
Setterset_path(value)
Getterget_path()

The path to the resource. In case it has its own file, it will return its filepath. If it’s tied to the scene, it will return the scene’s path, followed by the resource’s index.

Method Descriptions

  • void _setup_local_to_scene ( ) virtual

Virtual function which can be overridden to customize the behavior value of setup_local_to_scene.


Duplicates the resource, returning a new resource. By default, sub-resources are shared between resource copies for efficiency. This can be changed by passing true to the subresources argument which will copy the subresources.

Note: If subresources is true, this method will only perform a shallow copy. Nested resources within subresources will not be duplicated and will still be shared.


  • Node get_local_scene ( ) const

If resource_local_to_scene is enabled and the resource was loaded from a PackedScene instantiation, returns the local scene where this resource’s unique copy is in use. Otherwise, returns null.


  • RID get_rid ( ) const

Returns the RID of the resource (or an empty RID). Many resources (such as Texture, Mesh, etc) are high-level abstractions of resources stored in a server, so this function will return the original RID.


  • void setup_local_to_scene ( )

This method is called when a resource with resource_local_to_scene enabled is loaded from a PackedScene instantiation. Its behavior can be customized by overriding _setup_local_to_scene from script.

For most resources, this method performs no base logic. ViewportTexture performs custom logic to properly set the proxy texture and flags in the local viewport.


  • void take_over_path ( String path )

Sets the path of the resource, potentially overriding an existing cache entry for this path. This differs from setting resource_path, as the latter would error out if another resource was already cached for the given path.