Files
godot-docs-l10n/classes/it/class_resource.rst
2025-12-19 14:34:07 +01:00

516 lines
34 KiB
ReStructuredText

:github_url: hide
.. _class_Resource:
Resource
========
**Eredita:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
**Ereditato da:** :ref:`Animation<class_Animation>`, :ref:`AnimationLibrary<class_AnimationLibrary>`, :ref:`AnimationNode<class_AnimationNode>`, :ref:`AnimationNodeStateMachinePlayback<class_AnimationNodeStateMachinePlayback>`, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>`, :ref:`AudioBusLayout<class_AudioBusLayout>`, :ref:`AudioEffect<class_AudioEffect>`, :ref:`AudioStream<class_AudioStream>`, :ref:`BitMap<class_BitMap>`, :ref:`BoneMap<class_BoneMap>`, :ref:`ButtonGroup<class_ButtonGroup>`, :ref:`CameraAttributes<class_CameraAttributes>`, :ref:`ColorPalette<class_ColorPalette>`, :ref:`Compositor<class_Compositor>`, :ref:`CompositorEffect<class_CompositorEffect>`, :ref:`CryptoKey<class_CryptoKey>`, :ref:`Curve<class_Curve>`, :ref:`Curve2D<class_Curve2D>`, :ref:`Curve3D<class_Curve3D>`, :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>`, :ref:`EditorSettings<class_EditorSettings>`, :ref:`Environment<class_Environment>`, :ref:`FoldableGroup<class_FoldableGroup>`, :ref:`Font<class_Font>`, :ref:`GDExtension<class_GDExtension>`, :ref:`GLTFAccessor<class_GLTFAccessor>`, :ref:`GLTFAnimation<class_GLTFAnimation>`, :ref:`GLTFBufferView<class_GLTFBufferView>`, :ref:`GLTFCamera<class_GLTFCamera>`, :ref:`GLTFDocument<class_GLTFDocument>`, :ref:`GLTFDocumentExtension<class_GLTFDocumentExtension>`, :ref:`GLTFLight<class_GLTFLight>`, :ref:`GLTFMesh<class_GLTFMesh>`, :ref:`GLTFNode<class_GLTFNode>`, :ref:`GLTFPhysicsBody<class_GLTFPhysicsBody>`, :ref:`GLTFPhysicsShape<class_GLTFPhysicsShape>`, :ref:`GLTFSkeleton<class_GLTFSkeleton>`, :ref:`GLTFSkin<class_GLTFSkin>`, :ref:`GLTFSpecGloss<class_GLTFSpecGloss>`, :ref:`GLTFState<class_GLTFState>`, :ref:`GLTFTexture<class_GLTFTexture>`, :ref:`GLTFTextureSampler<class_GLTFTextureSampler>`, :ref:`Gradient<class_Gradient>`, :ref:`Image<class_Image>`, :ref:`ImporterMesh<class_ImporterMesh>`, :ref:`InputEvent<class_InputEvent>`, :ref:`JSON<class_JSON>`, :ref:`LabelSettings<class_LabelSettings>`, :ref:`LightmapGIData<class_LightmapGIData>`, :ref:`Material<class_Material>`, :ref:`Mesh<class_Mesh>`, :ref:`MeshLibrary<class_MeshLibrary>`, :ref:`MissingResource<class_MissingResource>`, :ref:`MultiMesh<class_MultiMesh>`, :ref:`NavigationMesh<class_NavigationMesh>`, :ref:`NavigationMeshSourceGeometryData2D<class_NavigationMeshSourceGeometryData2D>`, :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>`, :ref:`NavigationPolygon<class_NavigationPolygon>`, :ref:`Noise<class_Noise>`, :ref:`Occluder3D<class_Occluder3D>`, :ref:`OccluderPolygon2D<class_OccluderPolygon2D>`, :ref:`OggPacketSequence<class_OggPacketSequence>`, :ref:`OpenXRAction<class_OpenXRAction>`, :ref:`OpenXRActionMap<class_OpenXRActionMap>`, :ref:`OpenXRActionSet<class_OpenXRActionSet>`, :ref:`OpenXRBindingModifier<class_OpenXRBindingModifier>`, :ref:`OpenXRHapticBase<class_OpenXRHapticBase>`, :ref:`OpenXRInteractionProfile<class_OpenXRInteractionProfile>`, :ref:`OpenXRIPBinding<class_OpenXRIPBinding>`, :ref:`PackedDataContainer<class_PackedDataContainer>`, :ref:`PackedScene<class_PackedScene>`, :ref:`PhysicsMaterial<class_PhysicsMaterial>`, :ref:`PolygonPathFinder<class_PolygonPathFinder>`, :ref:`RDShaderFile<class_RDShaderFile>`, :ref:`RDShaderSPIRV<class_RDShaderSPIRV>`, :ref:`RichTextEffect<class_RichTextEffect>`, :ref:`SceneReplicationConfig<class_SceneReplicationConfig>`, :ref:`Script<class_Script>`, :ref:`Shader<class_Shader>`, :ref:`ShaderInclude<class_ShaderInclude>`, :ref:`Shape2D<class_Shape2D>`, :ref:`Shape3D<class_Shape3D>`, :ref:`Shortcut<class_Shortcut>`, :ref:`SkeletonModification2D<class_SkeletonModification2D>`, :ref:`SkeletonModificationStack2D<class_SkeletonModificationStack2D>`, :ref:`SkeletonProfile<class_SkeletonProfile>`, :ref:`Skin<class_Skin>`, :ref:`Sky<class_Sky>`, :ref:`SpriteFrames<class_SpriteFrames>`, :ref:`StyleBox<class_StyleBox>`, :ref:`SyntaxHighlighter<class_SyntaxHighlighter>`, :ref:`Texture<class_Texture>`, :ref:`Theme<class_Theme>`, :ref:`TileMapPattern<class_TileMapPattern>`, :ref:`TileSet<class_TileSet>`, :ref:`TileSetSource<class_TileSetSource>`, :ref:`Translation<class_Translation>`, :ref:`VideoStream<class_VideoStream>`, :ref:`VideoStreamPlayback<class_VideoStreamPlayback>`, :ref:`VisualShaderNode<class_VisualShaderNode>`, :ref:`VoxelGIData<class_VoxelGIData>`, :ref:`World2D<class_World2D>`, :ref:`World3D<class_World3D>`, :ref:`X509Certificate<class_X509Certificate>`
Classe di base per gli oggetti serializzabili.
.. rst-class:: classref-introduction-group
Descrizione
----------------------
Resource è la classe base per tutti i tipi di risorse specifiche di Godot, che servono principalmente per contenere dati. Poiché ereditano da :ref:`RefCounted<class_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. :ref:`PackedScene<class_PackedScene>`, uno degli :ref:`Object<class_Object>` più comuni in un progetto Godot, è anch'esso una risorsa, capace di archiviare e istanziare i :ref:`Node<class_Node>` contenuti quanto desiderato.
In GDScript, è possibile caricare le risorse dal disco dal loro :ref:`resource_path<class_Resource_property_resource_path>` attraverso :ref:`@GDScript.load()<class_@GDScript_method_load>` o :ref:`@GDScript.preload()<class_@GDScript_method_preload>`.
Il motore mantiene una cache globale di tutte le risorse caricate, referenziate dai loro percorsi (vedi :ref:`ResourceLoader.has_cached()<class_ResourceLoader_method_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.
.. rst-class:: classref-introduction-group
Tutorial
----------------
- :doc:`Risorse <../tutorials/scripting/resources>`
- :doc:`Quando e come evitare di usare i nodi per tutto <../tutorials/best_practices/node_alternatives>`
.. rst-class:: classref-reftable-group
Proprietà
------------------
.. table::
:widths: auto
+-----------------------------+-----------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` | ``false`` |
+-----------------------------+-----------------------------------------------------------------------------------+-----------+
| :ref:`String<class_String>` | :ref:`resource_name<class_Resource_property_resource_name>` | ``""`` |
+-----------------------------+-----------------------------------------------------------------------------------+-----------+
| :ref:`String<class_String>` | :ref:`resource_path<class_Resource_property_resource_path>` | ``""`` |
+-----------------------------+-----------------------------------------------------------------------------------+-----------+
| :ref:`String<class_String>` | :ref:`resource_scene_unique_id<class_Resource_property_resource_scene_unique_id>` | |
+-----------------------------+-----------------------------------------------------------------------------------+-----------+
.. rst-class:: classref-reftable-group
Metodi
------------
.. table::
:widths: auto
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`_get_rid<class_Resource_private_method__get_rid>`\ (\ ) |virtual| |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_reset_state<class_Resource_private_method__reset_state>`\ (\ ) |virtual| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_set_path_cache<class_Resource_private_method__set_path_cache>`\ (\ path\: :ref:`String<class_String>`\ ) |virtual| |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_setup_local_to_scene<class_Resource_private_method__setup_local_to_scene>`\ (\ ) |virtual| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Resource<class_Resource>` | :ref:`duplicate<class_Resource_method_duplicate>`\ (\ deep\: :ref:`bool<class_bool>` = false\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Resource<class_Resource>` | :ref:`duplicate_deep<class_Resource_method_duplicate_deep>`\ (\ deep_subresources_mode\: :ref:`DeepDuplicateMode<enum_Resource_DeepDuplicateMode>` = 1\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`emit_changed<class_Resource_method_emit_changed>`\ (\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`generate_scene_unique_id<class_Resource_method_generate_scene_unique_id>`\ (\ ) |static| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_id_for_path<class_Resource_method_get_id_for_path>`\ (\ path\: :ref:`String<class_String>`\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Node<class_Node>` | :ref:`get_local_scene<class_Resource_method_get_local_scene>`\ (\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`get_rid<class_Resource_method_get_rid>`\ (\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_built_in<class_Resource_method_is_built_in>`\ (\ ) |const| |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`reset_state<class_Resource_method_reset_state>`\ (\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_id_for_path<class_Resource_method_set_id_for_path>`\ (\ path\: :ref:`String<class_String>`, id\: :ref:`String<class_String>`\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_path_cache<class_Resource_method_set_path_cache>`\ (\ path\: :ref:`String<class_String>`\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`setup_local_to_scene<class_Resource_method_setup_local_to_scene>`\ (\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`take_over_path<class_Resource_method_take_over_path>`\ (\ path\: :ref:`String<class_String>`\ ) |
+---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Segnali
--------------
.. _class_Resource_signal_changed:
.. rst-class:: classref-signal
**changed**\ (\ ) :ref:`🔗<class_Resource_signal_changed>`
Emesso quando la risorsa cambia, solitamente quando una delle sue proprietà viene modificata. Vedi anche :ref:`emit_changed()<class_Resource_method_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.
.. rst-class:: classref-item-separator
----
.. _class_Resource_signal_setup_local_to_scene_requested:
.. rst-class:: classref-signal
**setup_local_to_scene_requested**\ (\ ) :ref:`🔗<class_Resource_signal_setup_local_to_scene_requested>`
**Deprecato:** This signal is only emitted when the resource is created. Override :ref:`_setup_local_to_scene()<class_Resource_private_method__setup_local_to_scene>` instead.
Emesso da una risorsa appena duplicata con :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` impostato su ``true``.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Enumerazioni
------------------------
.. _enum_Resource_DeepDuplicateMode:
.. rst-class:: classref-enumeration
enum **DeepDuplicateMode**: :ref:`🔗<enum_Resource_DeepDuplicateMode>`
.. _class_Resource_constant_DEEP_DUPLICATE_NONE:
.. rst-class:: classref-enumeration-constant
:ref:`DeepDuplicateMode<enum_Resource_DeepDuplicateMode>` **DEEP_DUPLICATE_NONE** = ``0``
Non duplicare affatto le sotto-risorse. Ciò è utile anche in caso di duplicazione profonda, in quanto consente di duplicare tutti gli array e i dizionari, ma di puntare comunque alle risorse originali.
.. _class_Resource_constant_DEEP_DUPLICATE_INTERNAL:
.. rst-class:: classref-enumeration-constant
:ref:`DeepDuplicateMode<enum_Resource_DeepDuplicateMode>` **DEEP_DUPLICATE_INTERNAL** = ``1``
Solo le sotto-risorse senza percorso o con un percorso locale alla scena saranno duplicate.
.. _class_Resource_constant_DEEP_DUPLICATE_ALL:
.. rst-class:: classref-enumeration-constant
:ref:`DeepDuplicateMode<enum_Resource_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.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni delle proprietà
------------------------------------------------------
.. _class_Resource_property_resource_local_to_scene:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **resource_local_to_scene** = ``false`` :ref:`🔗<class_Resource_property_resource_local_to_scene>`
.. rst-class:: classref-property-setget
- |void| **set_local_to_scene**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_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 :ref:`PackedScene.instantiate()<class_PackedScene_method_instantiate>`).
\ **Nota:** La modifica di questa proprietà in fase di esecuzione non ha alcun effetto sulle risorse duplicate già create.
.. rst-class:: classref-item-separator
----
.. _class_Resource_property_resource_name:
.. rst-class:: classref-property
:ref:`String<class_String>` **resource_name** = ``""`` :ref:`🔗<class_Resource_property_resource_name>`
.. rst-class:: classref-property-setget
- |void| **set_name**\ (\ value\: :ref:`String<class_String>`\ )
- :ref:`String<class_String>` **get_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.
.. rst-class:: classref-item-separator
----
.. _class_Resource_property_resource_path:
.. rst-class:: classref-property
:ref:`String<class_String>` **resource_path** = ``""`` :ref:`🔗<class_Resource_property_resource_path>`
.. rst-class:: classref-property-setget
- |void| **set_path**\ (\ value\: :ref:`String<class_String>`\ )
- :ref:`String<class_String>` **get_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 :ref:`PackedScene<class_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 :ref:`take_over_path()<class_Resource_method_take_over_path>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_property_resource_scene_unique_id:
.. rst-class:: classref-property
:ref:`String<class_String>` **resource_scene_unique_id** :ref:`🔗<class_Resource_property_resource_scene_unique_id>`
.. rst-class:: classref-property-setget
- |void| **set_scene_unique_id**\ (\ value\: :ref:`String<class_String>`\ )
- :ref:`String<class_String>` **get_scene_unique_id**\ (\ )
Un identificatore univoco relativo alla scena di questa risorsa. Se lasciato vuoto, l'ID viene generato automaticamente quando questa risorsa viene salvata all'interno di un :ref:`PackedScene<class_PackedScene>`. Se la risorsa non è all'interno di una scena, questa proprietà è normalmente vuota.
\ **Nota:** Quando viene salvato il :ref:`PackedScene<class_PackedScene>`, se più risorse nella stessa scena utilizzano lo stesso ID, solo la risorsa più vecchia nella gerarchia della scena mantiene l'ID originale. Alle altre risorse vengono assegnati nuovi ID da :ref:`generate_scene_unique_id()<class_Resource_method_generate_scene_unique_id>`.
\ **Nota:** L'impostazione di questa proprietà non emette il segnale :ref:`changed<class_Resource_signal_changed>`.
\ **Attenzione:** Quando viene impostato, l'ID deve essere composto solo da lettere, numeri e trattini bassi. Altrimenti, fallirà e sarà utilizzato come predefinito un ID generato casualmente.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni dei metodi
--------------------------------------------
.. _class_Resource_private_method__get_rid:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **_get_rid**\ (\ ) |virtual| |const| :ref:`🔗<class_Resource_private_method__get_rid>`
Sovrascrivi questo metodo per restituire un :ref:`RID<class_RID>` personalizzato quando viene chiamato :ref:`get_rid()<class_Resource_method_get_rid>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_private_method__reset_state:
.. rst-class:: classref-method
|void| **_reset_state**\ (\ ) |virtual| :ref:`🔗<class_Resource_private_method__reset_state>`
Per le risorse che memorizzano lo stato in proprietà non esportate, ad esempio tramite :ref:`Object._validate_property()<class_Object_private_method__validate_property>` o :ref:`Object._get_property_list()<class_Object_private_method__get_property_list>`, si dovrebbe implementare questo metodo per ripulirle.
.. rst-class:: classref-item-separator
----
.. _class_Resource_private_method__set_path_cache:
.. rst-class:: classref-method
|void| **_set_path_cache**\ (\ path\: :ref:`String<class_String>`\ ) |virtual| |const| :ref:`🔗<class_Resource_private_method__set_path_cache>`
Sovrascrivi questo metodo per eseguire ulteriore logica dopo che :ref:`set_path_cache()<class_Resource_method_set_path_cache>` viene chiamato su questo oggetto.
.. rst-class:: classref-item-separator
----
.. _class_Resource_private_method__setup_local_to_scene:
.. rst-class:: classref-method
|void| **_setup_local_to_scene**\ (\ ) |virtual| :ref:`🔗<class_Resource_private_method__setup_local_to_scene>`
Sovrascrivi questo metodo per personalizzare la risorsa appena duplicata creata da :ref:`PackedScene.instantiate()<class_PackedScene_method_instantiate>`, se il :ref:`resource_local_to_scene<class_Resource_property_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)
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_duplicate:
.. rst-class:: classref-method
:ref:`Resource<class_Resource>` **duplicate**\ (\ deep\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Resource_method_duplicate>`
Duplica questa risorsa, restituendo una nuova risorsa con le sue proprietà con ``export`` o :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE<class_@GlobalScope_constant_PROPERTY_USAGE_STORAGE>` copiate dall'originale.
Se ``deep`` è ``false``, viene restituita una copia **superficiale**: le proprietà innestate di tipo :ref:`Array<class_Array>`, :ref:`Dictionary<class_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 :ref:`DEEP_DUPLICATE_INTERNAL<class_Resource_constant_DEEP_DUPLICATE_INTERNAL>` usato in :ref:`duplicate_deep()<class_Resource_method_duplicate_deep>`.
Si applicano le seguenti eccezioni:
- Le proprietà delle sotto-risorse con il flag :ref:`@GlobalScope.PROPERTY_USAGE_ALWAYS_DUPLICATE<class_@GlobalScope_constant_PROPERTY_USAGE_ALWAYS_DUPLICATE>` sono sempre duplicate (ricorsivamente o meno, a seconda di ``deep``).
- Le proprietà delle sotto-risorse con il flag :ref:`@GlobalScope.PROPERTY_USAGE_NEVER_DUPLICATE<class_@GlobalScope_constant_PROPERTY_USAGE_NEVER_DUPLICATE>` non sono mai duplicate.
\ **Nota:** Per le risorse personalizzate, questo metodo fallirà se :ref:`Object._init()<class_Object_private_method__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'.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_duplicate_deep:
.. rst-class:: classref-method
:ref:`Resource<class_Resource>` **duplicate_deep**\ (\ deep_subresources_mode\: :ref:`DeepDuplicateMode<enum_Resource_DeepDuplicateMode>` = 1\ ) |const| :ref:`🔗<class_Resource_method_duplicate_deep>`
Duplica questa risorsa profondamente, come :ref:`duplicate()<class_Resource_method_duplicate>`\ ``(true)``, con ulteriore controllo su come le sottorisorse sono gestite.
\ ``deep_subresources_mode`` deve essere uno dei valori di :ref:`DeepDuplicateMode<enum_Resource_DeepDuplicateMode>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_emit_changed:
.. rst-class:: classref-method
|void| **emit_changed**\ (\ ) :ref:`🔗<class_Resource_method_emit_changed>`
Emette il segnale :ref:`changed<class_Resource_signal_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 :ref:`Object<class_Object>` personalizzati che dipendono dalla risorsa vengano aggiornati correttamente.
::
var damage:
set(new_value):
if damage != new_value:
damage = new_value
emit_changed()
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_generate_scene_unique_id:
.. rst-class:: classref-method
:ref:`String<class_String>` **generate_scene_unique_id**\ (\ ) |static| :ref:`🔗<class_Resource_method_generate_scene_unique_id>`
Genera un identificatore univoco per una risorsa da contenere all'interno di un :ref:`PackedScene<class_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 :ref:`resource_scene_unique_id<class_Resource_property_resource_scene_unique_id>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_get_id_for_path:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_id_for_path**\ (\ path\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_Resource_method_get_id_for_path>`
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 :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` e :ref:`ResourceFormatSaver<class_ResourceFormatSaver>`.
\ **Nota:** Questo metodo è implementato solo se eseguito in un contesto dell'editor. In fase di esecuzione, restituisce una stringa vuota.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_get_local_scene:
.. rst-class:: classref-method
:ref:`Node<class_Node>` **get_local_scene**\ (\ ) |const| :ref:`🔗<class_Resource_method_get_local_scene>`
Se :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` è impostato su ``true`` e la risorsa è stata caricata da un'istanza :ref:`PackedScene<class_PackedScene>`, restituisce il :ref:`Node<class_Node>` radice della scena in cui viene usata questa risorsa. Altrimenti, restituisce ``null``.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_get_rid:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **get_rid**\ (\ ) |const| :ref:`🔗<class_Resource_method_get_rid>`
Restituisce il :ref:`RID<class_RID>` di questa risorsa (o un RID vuoto). Molte risorse (come :ref:`Texture2D<class_Texture2D>`, :ref:`Mesh<class_Mesh>` e così via) sono astrazioni di alto livello di risorse memorizzate in un server specializzato (:ref:`DisplayServer<class_DisplayServer>`, :ref:`RenderingServer<class_RenderingServer>`, ecc.), quindi questa funzione restituirà il loro :ref:`RID<class_RID>` originale.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_is_built_in:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_built_in**\ (\ ) |const| :ref:`🔗<class_Resource_method_is_built_in>`
Restituisce ``true`` se la risorsa è salvata su disco come parte del file di un'altra risorsa.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_reset_state:
.. rst-class:: classref-method
|void| **reset_state**\ (\ ) :ref:`🔗<class_Resource_method_reset_state>`
Cancella le proprietà non esportate della risorsa. Vedi anche :ref:`_reset_state()<class_Resource_private_method__reset_state>`. Utile quando si implementa un formato di risorsa personalizzato estendendo :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` e :ref:`ResourceFormatSaver<class_ResourceFormatSaver>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_set_id_for_path:
.. rst-class:: classref-method
|void| **set_id_for_path**\ (\ path\: :ref:`String<class_String>`, id\: :ref:`String<class_String>`\ ) :ref:`🔗<class_Resource_method_set_id_for_path>`
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 :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` e :ref:`ResourceFormatSaver<class_ResourceFormatSaver>`.
\ **Nota:** Questo metodo è implementato solo quando è eseguito in un contesto di editor.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_set_path_cache:
.. rst-class:: classref-method
|void| **set_path_cache**\ (\ path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_Resource_method_set_path_cache>`
Imposta il percorso della risorsa su ``path`` senza coinvolgere la cache delle risorse. Utile per gestire i valori di :ref:`CacheMode<enum_ResourceFormatLoader_CacheMode>` quando si implementa un formato di risorsa personalizzato estendendo :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` e :ref:`ResourceFormatSaver<class_ResourceFormatSaver>`.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_setup_local_to_scene:
.. rst-class:: classref-method
|void| **setup_local_to_scene**\ (\ ) :ref:`🔗<class_Resource_method_setup_local_to_scene>`
**Deprecato:** This method should only be called internally.
Chiama :ref:`_setup_local_to_scene()<class_Resource_private_method__setup_local_to_scene>`. Se :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` è impostato su ``true``, questo metodo viene automaticamente chiamato da :ref:`PackedScene.instantiate()<class_PackedScene_method_instantiate>` dalla risorsa appena duplicata all'interno dell'istanza della scena.
.. rst-class:: classref-item-separator
----
.. _class_Resource_method_take_over_path:
.. rst-class:: classref-method
|void| **take_over_path**\ (\ path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_Resource_method_take_over_path>`
Imposta :ref:`resource_path<class_Resource_property_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.
.. |virtual| replace:: :abbr:`virtual (Questo metodo dovrebbe solitamente essere sovrascritto dall'utente per aver un effetto.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Questo metodo non ha effetti collaterali. Non modifica alcuna variabile appartenente all'istanza.)`
.. |vararg| replace:: :abbr:`vararg (Questo metodo accetta qualsiasi numero di argomenti oltre a quelli descritti qui.)`
.. |constructor| replace:: :abbr:`constructor (Questo metodo è utilizzato per creare un tipo.)`
.. |static| replace:: :abbr:`static (Questo metodo non necessita di alcun'istanza per essere chiamato, quindi può essere chiamato direttamente usando il nome della classe.)`
.. |operator| replace:: :abbr:`operator (Questo metodo descrive un operatore valido da usare con questo tipo come operando di sinistra.)`
.. |bitfield| replace:: :abbr:`BitField (Questo valore è un intero composto da una maschera di bit dei seguenti flag.)`
.. |void| replace:: :abbr:`void (Nessun valore restituito.)`