Resource
Hereda: RefCounted < Object
Heredado por: 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, 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
Clase base para objetos serializables.
Descripción
Resource es la clase base para todos los tipos de recursos específicos de Godot, sirviendo principalmente como contenedores de datos. Ya que heredan de RefCounted, los recursos son contados por referencia y liberados cuando ya no están en uso. También pueden anidarse dentro de otros recursos, y guardarse en el disco. PackedScene, uno de los Objects más comunes en un proyecto de Godot, también es un recurso, únicamente capaz de almacenar e instanciar los Nodes que contiene tantas veces como se desee.
En GDScript, los recursos pueden ser cargados desde el disco por su resource_path usando @GDScript.load() o @GDScript.preload().
El motor mantiene un caché global de todos los recursos cargados, referenciados por rutas (ver ResourceLoader.has_cached()). Un recurso será cacheado cuando se cargue por primera vez y se removerá del caché una vez que todas las referencias sean liberadas. Cuando un recurso está en caché, las cargas subsiguientes usando su ruta devolverán la referencia en caché.
Nota: En C#, los recursos no se liberarán instantáneamente después de que ya no estén en uso. En cambio, la recolección de basura se ejecutará periódicamente y liberará los recursos que ya no estén en uso. Esto significa que los recursos no utilizados permanecerán en la memoria durante un tiempo antes de ser eliminados.
Tutoriales
Propiedades
|
||
|
||
|
||
Métodos
_get_rid() virtual const |
|
void |
_reset_state() virtual |
void |
_set_path_cache(path: String) virtual const |
void |
_setup_local_to_scene() virtual |
duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const |
|
void |
|
generate_scene_unique_id() static |
|
get_id_for_path(path: String) const |
|
get_local_scene() const |
|
get_rid() const |
|
is_built_in() const |
|
void |
|
void |
set_id_for_path(path: String, id: String) |
void |
set_path_cache(path: String) |
void |
|
void |
take_over_path(path: String) |
Señales
changed() 🔗
Emitida cuando el recurso cambia, normalmente cuando se modifica una de sus propiedades. Véase también emit_changed().
Nota: Esta señal no se emite automáticamente para las propiedades de los recursos personalizados. Si es necesario, se debe crear un setter para emitir la señal.
setup_local_to_scene_requested() 🔗
Obsoleto: This signal is only emitted when the resource is created. Override _setup_local_to_scene() instead.
Emitido por un recurso recién duplicado con resource_local_to_scene establecido a true.
Enumeraciones
enum DeepDuplicateMode: 🔗
DeepDuplicateMode DEEP_DUPLICATE_NONE = 0
No se duplica ningún subrecurso. Esto es útil incluso en una duplicación profunda para tener todos los arrays y diccionarios duplicados pero siguiendo apuntando a los recursos originales.
DeepDuplicateMode DEEP_DUPLICATE_INTERNAL = 1
Solo se duplicarán los subrecursos sin una ruta o con una ruta local de la escena.
DeepDuplicateMode DEEP_DUPLICATE_ALL = 2
Cada subrecurso encontrado será duplicado, incluso si tiene una ruta no local. En otras palabras, incluso los recursos potencialmente grandes almacenados por separado serán duplicados.
Descripciones de Propiedades
bool resource_local_to_scene = false 🔗
Si es true, el recurso es duplicado para cada instancia de todas las escenas que lo usen. En tiempo de ejecución, el recurso puede ser modificado en una escena sin afectar a otras instancias (véase PackedScene.instantiate()).
Nota: Cambiar esta propiedad en tiempo de ejecución no tiene efecto en los recursos duplicados ya creados.
Un nombre opcional para este recurso. Cuando se define, su valor se muestra para representar el recurso en el panel Inspector. Para los scripts incorporados, el nombre se muestra como parte del nombre de la pestaña en el editor de scripts.
Nota: Algunos formatos de recursos no soportan nombres de recursos. Aún puedes establecer el nombre en el editor o a través de código, pero se perderá cuando el recurso se recargue. Por ejemplo, solo los scripts incorporados pueden tener un nombre de recurso, mientras que los scripts almacenados en archivos separados no pueden.
La ruta única a este recurso. Si se ha guardado en disco, el valor será su ruta de archivo. Si el recurso está contenido exclusivamente dentro de una escena, el valor será la ruta de archivo de la PackedScene, seguida de un identificador único.
Nota: Establecer esta propiedad manualmente puede fallar si un recurso con la misma ruta ya ha sido cargado previamente. Si es necesario, usa take_over_path().
String resource_scene_unique_id 🔗
Un identificador único relativo a la escena de este recurso. Si se deja vacío, el ID se genera automáticamente cuando este recurso se guarda dentro de un PackedScene. Si el recurso no está dentro de una escena, esta propiedad está vacía por defecto.
Nota: Cuando se guarda el PackedScene, si varios recursos de la misma escena utilizan el mismo ID, solo el primer recurso de la jerarquía de la escena conserva el ID original. A los demás recursos se les asignan nuevos ID desde generate_scene_unique_id().
Nota: El establecimiento de esta propiedad no emite la señal changed.
Advertencia: Al establecerlo, el ID solo debe consistir en letras, números y guiones bajos. De lo contrario, fallará y por defecto se generará un ID aleatorio.
Descripciones de Métodos
RID _get_rid() virtual const 🔗
Sobrescribe este método para devolver un RID personalizado cuando se llama a get_rid().
void _reset_state() virtual 🔗
Para los recursos que almacenan el estado en propiedades no exportadas, como a través de Object._validate_property() o Object._get_property_list(), este método debe ser implementado para borrarlas.
void _set_path_cache(path: String) virtual const 🔗
Sobrescribe este método para ejecutar lógica adicional después de que se llame a set_path_cache() en este objeto.
void _setup_local_to_scene() virtual 🔗
Sobrescribe este método para personalizar el recurso recién duplicado creado a partir de PackedScene.instantiate(), si el resource_local_to_scene del original está establecido en true.
Ejemplo: Establece un valor damage aleatorio para cada recurso local de una escena instanciada:
extends Resource
var damage = 0
func _setup_local_to_scene():
damage = randi_range(10, 40)
Resource duplicate(deep: bool = false) const 🔗
Duplica este recurso, devolviendo un nuevo recurso con sus propiedades exportadas o @GlobalScope.PROPERTY_USAGE_STORAGE copiadas del original.
Si deep es false, se devuelve una copia superficial: las propiedades anidadas Array, Dictionary y Resource no se duplican y se comparten con el recurso original.
Si deep es true, se devuelve una copia profunda: todos los arrays, diccionarios y arrays empaquetados anidados también se duplican (recursivamente). Cualquier Resource encontrado dentro solo se duplicará si es local, como DEEP_DUPLICATE_INTERNAL utilizado con duplicate_deep().
Se aplican las siguientes excepciones:
Las propiedades de subrecursos con la bandera @GlobalScope.PROPERTY_USAGE_ALWAYS_DUPLICATE siempre se duplican (recursivamente o no, dependiendo de
deep).Las propiedades de subrecursos con la bandera @GlobalScope.PROPERTY_USAGE_NEVER_DUPLICATE nunca se duplican.
Nota: Para recursos personalizados, este método fallará si Object._init() ha sido definido con parámetros requeridos.
Nota: Al duplicar con deep establecido en true, cada recurso encontrado, incluido aquel sobre el que se llama a este método, se duplicará solo una vez y se referenciará tantas veces como sea necesario en el duplicado. Por ejemplo, si estás duplicando el recurso A que tiene el recurso B referenciado dos veces, obtendrás un nuevo recurso A' que referencia a un nuevo recurso B' dos veces.
Resource duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const 🔗
Duplica este recurso, profundamente, como duplicate()(true), con un control adicional sobre cómo se manejan los subrecursos.
deep_subresources_mode debe ser uno de los valores de DeepDuplicateMode.
void emit_changed() 🔗
Emite la señal changed. Este método se llama automáticamente para algunos recursos incorporados.
Nota: Para los recursos personalizados, se recomienda llamar a este método siempre que se produzca un cambio significativo, como una propiedad modificada. Esto asegura que los Objects personalizados que dependen del recurso se actualicen correctamente.
var daño:
set(nuevo_valor):
if daño != nuevo_valor:
damage = nuevo_valor
emit_changed()
String generate_scene_unique_id() static 🔗
Genera un identificador único para un recurso que se contendrá dentro de una PackedScene, basado en la fecha, hora y un valor aleatorio actuales. La string devuelta se compone únicamente de letras (a a y) y números (0 a 8). Véase también resource_scene_unique_id.
String get_id_for_path(path: String) const 🔗
Desde la caché interna para ID únicos de escena, devuelve el ID de este recurso para la escena en path. Si no hay ninguna entrada, se devuelve una string vacía. Útil para mantener los ID únicos de escena iguales al implementar un formato de recurso personalizado compatible con VCS extendiendo ResourceFormatLoader y ResourceFormatSaver.
Nota: Este método solo se implementa cuando se ejecuta en un contexto de editor. En tiempo de ejecución, devuelve una string vacía.
Node get_local_scene() const 🔗
Si resource_local_to_scene está establecido en true y el recurso se ha cargado desde una instanciación de PackedScene, devuelve el Node raíz de la escena donde se utiliza este recurso. De lo contrario, devuelve null.
Devuelve el RID de este recurso (o un RID vacío). Muchos recursos (como Texture2D, Mesh, etc.) son abstracciones de alto nivel de recursos almacenados en un servidor especializado (DisplayServer, RenderingServer, etc.), por lo que esta función devolverá el RID original.
Devuelve true si el recurso está guardado en el disco como parte del archivo de otro recurso.
void reset_state() 🔗
Hace que el recurso borre sus propiedades no exportadas. Véase también _reset_state(). Útil al implementar un formato de recurso personalizado extendiendo ResourceFormatLoader y ResourceFormatSaver.
void set_id_for_path(path: String, id: String) 🔗
En la caché interna para ID únicos de escena, establece el ID de este recurso a id para la escena en path. Si id está vacío, la entrada de caché para path se borra. Útil para mantener los ID únicos de escena iguales al implementar un formato de recurso personalizado amigable con VCS extendiendo ResourceFormatLoader y ResourceFormatSaver.
Nota: Este método solo está implementado cuando se ejecuta en un contexto de editor.
void set_path_cache(path: String) 🔗
Establece la ruta del recurso a path sin involucrar la caché de recursos. Útil para manejar los valores de CacheMode al implementar un formato de recurso personalizado extendiendo ResourceFormatLoader y ResourceFormatSaver.
void setup_local_to_scene() 🔗
Obsoleto: This method should only be called internally.
Llama a _setup_local_to_scene(). Si resource_local_to_scene está establecido en true, este método es llamado automáticamente desde PackedScene.instantiate() por el recurso recién duplicado dentro de la instancia de la escena.
void take_over_path(path: String) 🔗
Establece la resource_path a path, potencialmente sobrescribiendo una entrada de caché existente para esta ruta. Los intentos posteriores de cargar un recurso sobrescrito por la ruta devolverán este recurso en su lugar.