class_resource.rst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/3.5/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.5/doc/classes/Resource.xml.
  6. .. _class_Resource:
  7. Resource
  8. ========
  9. **Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
  10. **Inherited By:** :ref:`Animation<class_Animation>`, :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:`BakedLightmapData<class_BakedLightmapData>`, :ref:`BitMap<class_BitMap>`, :ref:`ButtonGroup<class_ButtonGroup>`, :ref:`CryptoKey<class_CryptoKey>`, :ref:`CubeMap<class_CubeMap>`, :ref:`Curve<class_Curve>`, :ref:`Curve2D<class_Curve2D>`, :ref:`Curve3D<class_Curve3D>`, :ref:`DynamicFontData<class_DynamicFontData>`, :ref:`EditorSettings<class_EditorSettings>`, :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>`, :ref:`Environment<class_Environment>`, :ref:`Font<class_Font>`, :ref:`GDNativeLibrary<class_GDNativeLibrary>`, :ref:`GIProbeData<class_GIProbeData>`, :ref:`GLTFAccessor<class_GLTFAccessor>`, :ref:`GLTFAnimation<class_GLTFAnimation>`, :ref:`GLTFBufferView<class_GLTFBufferView>`, :ref:`GLTFCamera<class_GLTFCamera>`, :ref:`GLTFDocument<class_GLTFDocument>`, :ref:`GLTFLight<class_GLTFLight>`, :ref:`GLTFMesh<class_GLTFMesh>`, :ref:`GLTFNode<class_GLTFNode>`, :ref:`GLTFSkeleton<class_GLTFSkeleton>`, :ref:`GLTFSkin<class_GLTFSkin>`, :ref:`GLTFSpecGloss<class_GLTFSpecGloss>`, :ref:`GLTFState<class_GLTFState>`, :ref:`GLTFTexture<class_GLTFTexture>`, :ref:`Gradient<class_Gradient>`, :ref:`Image<class_Image>`, :ref:`InputEvent<class_InputEvent>`, :ref:`Material<class_Material>`, :ref:`Mesh<class_Mesh>`, :ref:`MeshLibrary<class_MeshLibrary>`, :ref:`MultiMesh<class_MultiMesh>`, :ref:`NavigationMesh<class_NavigationMesh>`, :ref:`NavigationPolygon<class_NavigationPolygon>`, :ref:`OccluderPolygon2D<class_OccluderPolygon2D>`, :ref:`OccluderShape<class_OccluderShape>`, :ref:`OpenSimplexNoise<class_OpenSimplexNoise>`, :ref:`PackedDataContainer<class_PackedDataContainer>`, :ref:`PackedScene<class_PackedScene>`, :ref:`PhysicsMaterial<class_PhysicsMaterial>`, :ref:`PolygonPathFinder<class_PolygonPathFinder>`, :ref:`RichTextEffect<class_RichTextEffect>`, :ref:`Script<class_Script>`, :ref:`Shader<class_Shader>`, :ref:`Shape<class_Shape>`, :ref:`Shape2D<class_Shape2D>`, :ref:`ShortCut<class_ShortCut>`, :ref:`Skin<class_Skin>`, :ref:`Sky<class_Sky>`, :ref:`SpriteFrames<class_SpriteFrames>`, :ref:`StyleBox<class_StyleBox>`, :ref:`TextFile<class_TextFile>`, :ref:`Texture<class_Texture>`, :ref:`TextureLayered<class_TextureLayered>`, :ref:`Theme<class_Theme>`, :ref:`TileSet<class_TileSet>`, :ref:`Translation<class_Translation>`, :ref:`VideoStream<class_VideoStream>`, :ref:`VisualScriptNode<class_VisualScriptNode>`, :ref:`VisualShaderNode<class_VisualShaderNode>`, :ref:`World<class_World>`, :ref:`World2D<class_World2D>`, :ref:`X509Certificate<class_X509Certificate>`
  11. Base class for all resources.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. Resource is the base class for all Godot-specific resource types, serving primarily as data containers. Since they inherit from :ref:`Reference<class_Reference>`, resources 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 :ref:`Node<class_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 :ref:`Node<class_Node>` or another resource.
  16. \ **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.
  17. .. rst-class:: classref-introduction-group
  18. Tutorials
  19. ---------
  20. - :doc:`Resources <../tutorials/scripting/resources>`
  21. - :doc:`When and how to avoid using nodes for everything <../tutorials/best_practices/node_alternatives>`
  22. .. rst-class:: classref-reftable-group
  23. Properties
  24. ----------
  25. .. table::
  26. :widths: auto
  27. +-----------------------------+---------------------------------------------------------------------------------+-----------+
  28. | :ref:`bool<class_bool>` | :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` | ``false`` |
  29. +-----------------------------+---------------------------------------------------------------------------------+-----------+
  30. | :ref:`String<class_String>` | :ref:`resource_name<class_Resource_property_resource_name>` | ``""`` |
  31. +-----------------------------+---------------------------------------------------------------------------------+-----------+
  32. | :ref:`String<class_String>` | :ref:`resource_path<class_Resource_property_resource_path>` | ``""`` |
  33. +-----------------------------+---------------------------------------------------------------------------------+-----------+
  34. .. rst-class:: classref-reftable-group
  35. Methods
  36. -------
  37. .. table::
  38. :widths: auto
  39. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  40. | void | :ref:`_setup_local_to_scene<class_Resource_method__setup_local_to_scene>` **(** **)** |virtual| |
  41. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  42. | :ref:`Resource<class_Resource>` | :ref:`duplicate<class_Resource_method_duplicate>` **(** :ref:`bool<class_bool>` subresources=false **)** |const| |
  43. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  44. | void | :ref:`emit_changed<class_Resource_method_emit_changed>` **(** **)** |
  45. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  46. | :ref:`Node<class_Node>` | :ref:`get_local_scene<class_Resource_method_get_local_scene>` **(** **)** |const| |
  47. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  48. | :ref:`RID<class_RID>` | :ref:`get_rid<class_Resource_method_get_rid>` **(** **)** |const| |
  49. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  50. | void | :ref:`setup_local_to_scene<class_Resource_method_setup_local_to_scene>` **(** **)** |
  51. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  52. | void | :ref:`take_over_path<class_Resource_method_take_over_path>` **(** :ref:`String<class_String>` path **)** |
  53. +---------------------------------+------------------------------------------------------------------------------------------------------------------+
  54. .. rst-class:: classref-section-separator
  55. ----
  56. .. rst-class:: classref-descriptions-group
  57. Signals
  58. -------
  59. .. _class_Resource_signal_changed:
  60. .. rst-class:: classref-signal
  61. **changed** **(** **)**
  62. Emitted whenever the resource changes.
  63. \ **Note:** This signal is not emitted automatically for custom resources, which means that you need to create a setter and emit the signal yourself.
  64. .. rst-class:: classref-section-separator
  65. ----
  66. .. rst-class:: classref-descriptions-group
  67. Property Descriptions
  68. ---------------------
  69. .. _class_Resource_property_resource_local_to_scene:
  70. .. rst-class:: classref-property
  71. :ref:`bool<class_bool>` **resource_local_to_scene** = ``false``
  72. .. rst-class:: classref-property-setget
  73. - void **set_local_to_scene** **(** :ref:`bool<class_bool>` value **)**
  74. - :ref:`bool<class_bool>` **is_local_to_scene** **(** **)**
  75. 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.
  76. .. rst-class:: classref-item-separator
  77. ----
  78. .. _class_Resource_property_resource_name:
  79. .. rst-class:: classref-property
  80. :ref:`String<class_String>` **resource_name** = ``""``
  81. .. rst-class:: classref-property-setget
  82. - void **set_name** **(** :ref:`String<class_String>` value **)**
  83. - :ref:`String<class_String>` **get_name** **(** **)**
  84. The name of the resource. This is an optional identifier. If :ref:`resource_name<class_Resource_property_resource_name>` is not empty, its value will be displayed to represent the current resource in the editor inspector. For built-in scripts, the :ref:`resource_name<class_Resource_property_resource_name>` will be displayed as the tab name in the script editor.
  85. .. rst-class:: classref-item-separator
  86. ----
  87. .. _class_Resource_property_resource_path:
  88. .. rst-class:: classref-property
  89. :ref:`String<class_String>` **resource_path** = ``""``
  90. .. rst-class:: classref-property-setget
  91. - void **set_path** **(** :ref:`String<class_String>` value **)**
  92. - :ref:`String<class_String>` **get_path** **(** **)**
  93. 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.
  94. .. rst-class:: classref-section-separator
  95. ----
  96. .. rst-class:: classref-descriptions-group
  97. Method Descriptions
  98. -------------------
  99. .. _class_Resource_method__setup_local_to_scene:
  100. .. rst-class:: classref-method
  101. void **_setup_local_to_scene** **(** **)** |virtual|
  102. Virtual function which can be overridden to customize the behavior value of :ref:`setup_local_to_scene<class_Resource_method_setup_local_to_scene>`.
  103. .. rst-class:: classref-item-separator
  104. ----
  105. .. _class_Resource_method_duplicate:
  106. .. rst-class:: classref-method
  107. :ref:`Resource<class_Resource>` **duplicate** **(** :ref:`bool<class_bool>` subresources=false **)** |const|
  108. Duplicates the resource, returning a new resource with the exported members copied. **Note:** To duplicate the resource the constructor is called without arguments. This method will error when the constructor doesn't have default values.
  109. 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.
  110. \ **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.
  111. \ **Note:** When duplicating a resource, only ``export``\ ed properties are copied. Other properties will be set to their default value in the new resource.
  112. .. rst-class:: classref-item-separator
  113. ----
  114. .. _class_Resource_method_emit_changed:
  115. .. rst-class:: classref-method
  116. void **emit_changed** **(** **)**
  117. Emits the :ref:`changed<class_Resource_signal_changed>` signal.
  118. If external objects which depend on this resource should be updated, this method must be called manually whenever the state of this resource has changed (such as modification of properties).
  119. The method is equivalent to:
  120. ::
  121. emit_signal("changed")
  122. \ **Note:** This method is called automatically for built-in resources.
  123. .. rst-class:: classref-item-separator
  124. ----
  125. .. _class_Resource_method_get_local_scene:
  126. .. rst-class:: classref-method
  127. :ref:`Node<class_Node>` **get_local_scene** **(** **)** |const|
  128. If :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` is enabled and the resource was loaded from a :ref:`PackedScene<class_PackedScene>` instantiation, returns the local scene where this resource's unique copy is in use. Otherwise, returns ``null``.
  129. .. rst-class:: classref-item-separator
  130. ----
  131. .. _class_Resource_method_get_rid:
  132. .. rst-class:: classref-method
  133. :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
  134. Returns the RID of the resource (or an empty RID). Many resources (such as :ref:`Texture<class_Texture>`, :ref:`Mesh<class_Mesh>`, etc) are high-level abstractions of resources stored in a server, so this function will return the original RID.
  135. .. rst-class:: classref-item-separator
  136. ----
  137. .. _class_Resource_method_setup_local_to_scene:
  138. .. rst-class:: classref-method
  139. void **setup_local_to_scene** **(** **)**
  140. This method is called when a resource with :ref:`resource_local_to_scene<class_Resource_property_resource_local_to_scene>` enabled is loaded from a :ref:`PackedScene<class_PackedScene>` instantiation. Its behavior can be customized by overriding :ref:`_setup_local_to_scene<class_Resource_method__setup_local_to_scene>` from script.
  141. For most resources, this method performs no base logic. :ref:`ViewportTexture<class_ViewportTexture>` performs custom logic to properly set the proxy texture and flags in the local viewport.
  142. .. rst-class:: classref-item-separator
  143. ----
  144. .. _class_Resource_method_take_over_path:
  145. .. rst-class:: classref-method
  146. void **take_over_path** **(** :ref:`String<class_String>` path **)**
  147. Sets the path of the resource, potentially overriding an existing cache entry for this path. This differs from setting :ref:`resource_path<class_Resource_property_resource_path>`, as the latter would error out if another resource was already cached for the given path.
  148. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  149. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  150. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  151. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`