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

Eredita: RefCounted < Object

Ereditato da: 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 di base per gli oggetti serializzabili.

Descrizione

Resource è la classe base per tutti i tipi di risorse specifiche di Godot, che servono principalmente per contenere dati. Poiché ereditano da RefCounted, le risorse sono conteggiate per riferimento e liberate quando non sono più in uso. È possibile anche annidarle all'interno di altre risorse e salvarle su disco. PackedScene, uno degli Object più comuni in un progetto Godot, è anch'esso una risorsa, capace di archiviare e istanziare i Node contenuti quanto desiderato.

In GDScript, è possibile caricare le risorse dal disco dal loro resource_path attraverso @GDScript.load() o @GDScript.preload().

Il motore mantiene una cache globale di tutte le risorse caricate, referenziate dai loro percorsi (vedi ResourceLoader.has_cached()). Una risorsa sarà memorizzata nella cache quando caricata per la prima volta e rimossa dalla cache una volta che tutti i suoi riferimenti saranno rilasciati. Quando una risorsa è memorizzata nella cache, caricarla successivamente dal suo percorso restituirà il riferimento memorizzato nella cache.

Nota: In C#, le risorse non sono liberate subito dopo che non sono più in uso. Invece, il collettore di memoria libererà periodicamente tali risorse. Ciò significa che le risorse inutilizzate rimarranno in memoria per un po' prima di essere rimosse.

Tutorial

Proprietà

bool

resource_local_to_scene

false

String

resource_name

""

String

resource_path

""

String

resource_scene_unique_id

Metodi

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)


Segnali

changed() 🔗

Emesso quando la risorsa cambia, solitamente quando una delle sue proprietà viene modificata. Vedi anche emit_changed().

Nota: Questo segnale non viene emesso automaticamente per le proprietà delle risorse personalizzate. Se necessario, è necessario creare un setter per emettere il segnale.


setup_local_to_scene_requested() 🔗

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

Emesso da una risorsa appena duplicata con resource_local_to_scene impostato su true.


Enumerazioni

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

Solo le sotto-risorse senza percorso o con un percorso locale alla scena saranno duplicate.

DeepDuplicateMode DEEP_DUPLICATE_ALL = 2

Ogni sotto-risorsa trovata sarà duplicata, anche se ha un percorso non locale. In altre parole, anche risorse grandi, potenzialmente salvate separatamente, saranno duplicate.


Descrizioni delle proprietà

bool resource_local_to_scene = false 🔗

  • void set_local_to_scene(value: bool)

  • bool is_local_to_scene()

Se true, la risorsa è duplicata per ogni istanza di tutte le scene che la utilizzano. In fase di esecuzione, la risorsa può essere modificata in una scena senza influenzare altre istanze (vedi PackedScene.instantiate()).

Nota: La modifica di questa proprietà in fase di esecuzione non ha alcun effetto sulle risorse duplicate già create.


String resource_name = "" 🔗

Un nome facoltativo per questa risorsa. Quando definito, il suo valore è visualizzato per rappresentare la risorsa nel pannello dell'Ispettore. Per gli script incorporati, il nome è visualizzato come parte del nome della scheda nell'editor di script.

Nota: Alcuni formati di risorse non supportano i nomi di risorse. Puoi comunque impostare il nome nell'editor o tramite codice, ma sarà perso quando la risorsa viene ricaricata. Ad esempio, solo gli script incorporati possono avere un nome di risorsa, mentre gli script memorizzati in file separati non possono.


String resource_path = "" 🔗

Il percorso univoco per questa risorsa. Se è stata salvata su disco, il valore sarà il suo percorso di file. Se la risorsa è contenuta esclusivamente all'interno di una scena, il valore sarà il percorso di file del PackedScene, seguito da un identificatore univoco.

Nota: L'impostazione manuale di questa proprietà potrebbe non riuscire se una risorsa con lo stesso percorso è già stata caricata in precedenza. Se necessario, usa 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.


Descrizioni dei metodi

RID _get_rid() virtual const 🔗

Sovrascrivi questo metodo per restituire un RID personalizzato quando viene chiamato get_rid().


void _reset_state() virtual 🔗

Per le risorse che memorizzano lo stato in proprietà non esportate, ad esempio tramite Object._validate_property() o Object._get_property_list(), si dovrebbe implementare questo metodo per ripulirle.


void _set_path_cache(path: String) virtual const 🔗

Sovrascrivi questo metodo per eseguire ulteriore logica dopo che set_path_cache() viene chiamato su questo oggetto.


void _setup_local_to_scene() virtual 🔗

Sovrascrivi questo metodo per personalizzare la risorsa appena duplicata creata da PackedScene.instantiate(), se il resource_local_to_scene dell'originale è impostato su true.

Esempio: Imposta un valore casuale di damage per ogni risorsa locale da una scena istanziata.

extends Resource

var damage = 0

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

Error copy_from_resource(resource: Resource) 🔗

Copia i dati da resource in questa risorsa. Entrambe le risorse devono condividere la stessa classe.


Resource duplicate(deep: bool = false) const 🔗

Duplica questa risorsa, restituendo una nuova risorsa con le sue proprietà con export o @GlobalScope.PROPERTY_USAGE_STORAGE copiate dall'originale.

Se deep è false, viene restituita una copia superficiale: le proprietà innestate di tipo Array, Dictionary e Resource non sono duplicate e sono condivise con la risorsa originale.

Se deep è true, viene restituita una copia profonda: tutti gli array innestati, i dizionari e gli array impacchettati sono duplicati (ricorsivamente). Qualsiasi Resource trovata all'interno sarà duplicata solo se locale, come con DEEP_DUPLICATE_INTERNAL usato in duplicate_deep().

Si applicano le seguenti eccezioni:

Nota: Per le risorse personalizzate, questo metodo fallirà se Object._init() è stato definito con parametri obbligatori.

Nota: Quando si duplica con deep impostato su true, ogni risorsa trovata, inclusa quella su cui viene chiamato questo metodo, sarà duplicata una sola volta e referenziata quanto necessario nel duplicato. Ad esempio, se si duplica la risorsa A a cui si riferisce due volte la risorsa B, si otterrà una nuova risorsa A' che referenzia due volte una nuova risorsa B'.


Resource duplicate_deep(deep_subresources_mode: DeepDuplicateMode = 1) const 🔗

Duplica questa risorsa profondamente, come duplicate() quando si passa true, con più controllo su come le sotto-risorse vengono gestite.


void emit_changed() 🔗

Emette il segnale changed. Questo metodo viene chiamato automaticamente per alcune risorse integrate.

Nota: Per le risorse personalizzate, si consiglia di chiamare questo metodo ogni volta che si verifica una modifica significativa, come una proprietà modificata. Ciò garantisce che gli Object personalizzati che dipendono dalla risorsa vengano aggiornati correttamente.

var damage:
    set(new_value):
        if damage != new_value:
            damage = new_value
            emit_changed()

String generate_scene_unique_id() static 🔗

Genera un identificatore univoco per una risorsa da contenere all'interno di un PackedScene, in base alla data e all'ora attuali e a un valore casuale. La stringa restituita è composta solo da lettere (da a a y) e numeri (da 0 a 8). Vedi anche resource_scene_unique_id.


String get_id_for_path(path: String) const 🔗

Restituisce l'ID di questa risorsa per la scena al percorso path, ricavato dalla cache interna per gli ID univoci nelle scene. Se non c'è alcuna voce, viene restituita una stringa vuota. Utile per mantenere invariati gli ID univoci nelle scene quando si implementa un formato di risorsa personalizzato compatibile con VCS, estendendo ResourceFormatLoader e ResourceFormatSaver.

Nota: Questo metodo è implementato solo se eseguito in un contesto dell'editor. In fase di esecuzione, restituisce una stringa vuota.


Node get_local_scene() const 🔗

Se resource_local_to_scene è impostato su true e la risorsa è stata caricata da un'istanza PackedScene, restituisce il Node radice della scena in cui viene usata questa risorsa. Altrimenti, restituisce null.


RID get_rid() const 🔗

Restituisce il RID di questa risorsa (o un RID vuoto). Molte risorse (come Texture2D, Mesh e così via) sono astrazioni di alto livello di risorse memorizzate in un server specializzato (DisplayServer, RenderingServer, ecc.), quindi questa funzione restituirà il loro RID originale.


bool is_built_in() const 🔗

Restituisce true se la risorsa è salvata su disco come parte del file di un'altra risorsa.


void reset_state() 🔗

Cancella le proprietà non esportate della risorsa. Vedi anche _reset_state(). Utile quando si implementa un formato di risorsa personalizzato estendendo ResourceFormatLoader e ResourceFormatSaver.


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

Nella cache interna per gli ID univoci di scena, imposta l'ID di questa risorsa su id per la scena nel percorso path. Se id è vuoto, la voce nella cache per path viene cancellata. Utile per mantenere invariati gli ID univoci di scena quando si implementa un formato di risorsa personalizzato compatibile con VCS estendendo ResourceFormatLoader e ResourceFormatSaver.

Nota: Questo metodo è implementato solo quando è eseguito in un contesto di editor.


void set_path_cache(path: String) 🔗

Imposta il percorso della risorsa su path senza coinvolgere la cache delle risorse. Utile per gestire i valori di CacheMode quando si implementa un formato di risorsa personalizzato estendendo ResourceFormatLoader e ResourceFormatSaver.


void setup_local_to_scene() 🔗

Deprecato: This method should only be called internally.

Chiama _setup_local_to_scene(). Se resource_local_to_scene è impostato su true, questo metodo viene automaticamente chiamato da PackedScene.instantiate() dalla risorsa appena duplicata all'interno dell'istanza della scena.


void take_over_path(path: String) 🔗

Imposta resource_path su path, sovrascrivendo potenzialmente una voce esistente nella cache per questo percorso. Ulteriori tentativi di caricare una risorsa sovrascritta per il suo percorso restituiranno invece questa risorsa.