class_resourceloader.rst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. :github_url: hide
  2. .. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
  3. .. DO NOT EDIT THIS FILE, but the ResourceLoader.xml source instead.
  4. .. The source is found in doc/classes or modules/<name>/doc_classes.
  5. .. _class_ResourceLoader:
  6. ResourceLoader
  7. ==============
  8. **Inherits:** :ref:`Object<class_Object>`
  9. Singleton used to load resource files.
  10. Description
  11. -----------
  12. Singleton used to load resource files from the filesystem.
  13. It uses the many :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` classes registered in the engine (either built-in or from a plugin) to load files into memory and convert them to a format that can be used by the engine.
  14. Tutorials
  15. ---------
  16. - `OS Test Demo <https://godotengine.org/asset-library/asset/677>`__
  17. Methods
  18. -------
  19. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  20. | :ref:`bool<class_bool>` | :ref:`exists<class_ResourceLoader_method_exists>` **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="" **)** |
  21. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  22. | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_dependencies<class_ResourceLoader_method_get_dependencies>` **(** :ref:`String<class_String>` path **)** |
  23. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_recognized_extensions_for_type<class_ResourceLoader_method_get_recognized_extensions_for_type>` **(** :ref:`String<class_String>` type **)** |
  25. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  26. | :ref:`int<class_int>` | :ref:`get_resource_uid<class_ResourceLoader_method_get_resource_uid>` **(** :ref:`String<class_String>` path **)** |
  27. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  28. | :ref:`bool<class_bool>` | :ref:`has_cached<class_ResourceLoader_method_has_cached>` **(** :ref:`String<class_String>` path **)** |
  29. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  30. | :ref:`Resource<class_Resource>` | :ref:`load<class_ResourceLoader_method_load>` **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="", :ref:`CacheMode<enum_ResourceLoader_CacheMode>` cache_mode=1 **)** |
  31. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  32. | :ref:`Resource<class_Resource>` | :ref:`load_threaded_get<class_ResourceLoader_method_load_threaded_get>` **(** :ref:`String<class_String>` path **)** |
  33. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  34. | :ref:`ThreadLoadStatus<enum_ResourceLoader_ThreadLoadStatus>` | :ref:`load_threaded_get_status<class_ResourceLoader_method_load_threaded_get_status>` **(** :ref:`String<class_String>` path, :ref:`Array<class_Array>` progress=[] **)** |
  35. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  36. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`load_threaded_request<class_ResourceLoader_method_load_threaded_request>` **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="", :ref:`bool<class_bool>` use_sub_threads=false **)** |
  37. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  38. | void | :ref:`set_abort_on_missing_resources<class_ResourceLoader_method_set_abort_on_missing_resources>` **(** :ref:`bool<class_bool>` abort **)** |
  39. +---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  40. Enumerations
  41. ------------
  42. .. _enum_ResourceLoader_ThreadLoadStatus:
  43. .. _class_ResourceLoader_constant_THREAD_LOAD_INVALID_RESOURCE:
  44. .. _class_ResourceLoader_constant_THREAD_LOAD_IN_PROGRESS:
  45. .. _class_ResourceLoader_constant_THREAD_LOAD_FAILED:
  46. .. _class_ResourceLoader_constant_THREAD_LOAD_LOADED:
  47. enum **ThreadLoadStatus**:
  48. - **THREAD_LOAD_INVALID_RESOURCE** = **0** --- The resource is invalid, or has not been loaded with :ref:`load_threaded_request<class_ResourceLoader_method_load_threaded_request>`.
  49. - **THREAD_LOAD_IN_PROGRESS** = **1** --- The resource is still being loaded.
  50. - **THREAD_LOAD_FAILED** = **2** --- Some error occurred during loading and it failed.
  51. - **THREAD_LOAD_LOADED** = **3** --- The resource was loaded successfully and can be accessed via :ref:`load_threaded_get<class_ResourceLoader_method_load_threaded_get>`.
  52. ----
  53. .. _enum_ResourceLoader_CacheMode:
  54. .. _class_ResourceLoader_constant_CACHE_MODE_IGNORE:
  55. .. _class_ResourceLoader_constant_CACHE_MODE_REUSE:
  56. .. _class_ResourceLoader_constant_CACHE_MODE_REPLACE:
  57. enum **CacheMode**:
  58. - **CACHE_MODE_IGNORE** = **0**
  59. - **CACHE_MODE_REUSE** = **1**
  60. - **CACHE_MODE_REPLACE** = **2**
  61. Method Descriptions
  62. -------------------
  63. .. _class_ResourceLoader_method_exists:
  64. - :ref:`bool<class_bool>` **exists** **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="" **)**
  65. Returns whether a recognized resource exists for the given ``path``.
  66. An optional ``type_hint`` can be used to further specify the :ref:`Resource<class_Resource>` type that should be handled by the :ref:`ResourceFormatLoader<class_ResourceFormatLoader>`. Anything that inherits from :ref:`Resource<class_Resource>` can be used as a type hint, for example :ref:`Image<class_Image>`.
  67. ----
  68. .. _class_ResourceLoader_method_get_dependencies:
  69. - :ref:`PackedStringArray<class_PackedStringArray>` **get_dependencies** **(** :ref:`String<class_String>` path **)**
  70. Returns the dependencies for the resource at the given ``path``.
  71. ----
  72. .. _class_ResourceLoader_method_get_recognized_extensions_for_type:
  73. - :ref:`PackedStringArray<class_PackedStringArray>` **get_recognized_extensions_for_type** **(** :ref:`String<class_String>` type **)**
  74. Returns the list of recognized extensions for a resource type.
  75. ----
  76. .. _class_ResourceLoader_method_get_resource_uid:
  77. - :ref:`int<class_int>` **get_resource_uid** **(** :ref:`String<class_String>` path **)**
  78. Returns the ID associated with a given resource path, or ``-1`` when no such ID exists.
  79. ----
  80. .. _class_ResourceLoader_method_has_cached:
  81. - :ref:`bool<class_bool>` **has_cached** **(** :ref:`String<class_String>` path **)**
  82. Returns whether a cached resource is available for the given ``path``.
  83. Once a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to the :ref:`load<class_ResourceLoader_method_load>` method will use the cached version. The cached resource can be overridden by using :ref:`Resource.take_over_path<class_Resource_method_take_over_path>` on a new resource for that same path.
  84. ----
  85. .. _class_ResourceLoader_method_load:
  86. - :ref:`Resource<class_Resource>` **load** **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="", :ref:`CacheMode<enum_ResourceLoader_CacheMode>` cache_mode=1 **)**
  87. Loads a resource at the given ``path``, caching the result for further access.
  88. The registered :ref:`ResourceFormatLoader<class_ResourceFormatLoader>`\ s are queried sequentially to find the first one which can handle the file's extension, and then attempt loading. If loading fails, the remaining ResourceFormatLoaders are also attempted.
  89. An optional ``type_hint`` can be used to further specify the :ref:`Resource<class_Resource>` type that should be handled by the :ref:`ResourceFormatLoader<class_ResourceFormatLoader>`. Anything that inherits from :ref:`Resource<class_Resource>` can be used as a type hint, for example :ref:`Image<class_Image>`.
  90. The ``cache_mode`` property defines whether and how the cache should be used or updated when loading the resource. See :ref:`CacheMode<enum_ResourceLoader_CacheMode>` for details.
  91. Returns an empty resource if no :ref:`ResourceFormatLoader<class_ResourceFormatLoader>` could handle the file.
  92. GDScript has a simplified :ref:`@GDScript.load<class_@GDScript_method_load>` built-in method which can be used in most situations, leaving the use of ``ResourceLoader`` for more advanced scenarios.
  93. ----
  94. .. _class_ResourceLoader_method_load_threaded_get:
  95. - :ref:`Resource<class_Resource>` **load_threaded_get** **(** :ref:`String<class_String>` path **)**
  96. Returns the resource loaded by :ref:`load_threaded_request<class_ResourceLoader_method_load_threaded_request>`.
  97. If this is called before the loading thread is done (i.e. :ref:`load_threaded_get_status<class_ResourceLoader_method_load_threaded_get_status>` is not :ref:`THREAD_LOAD_LOADED<class_ResourceLoader_constant_THREAD_LOAD_LOADED>`), the calling thread will be blocked until the resource has finished loading.
  98. ----
  99. .. _class_ResourceLoader_method_load_threaded_get_status:
  100. - :ref:`ThreadLoadStatus<enum_ResourceLoader_ThreadLoadStatus>` **load_threaded_get_status** **(** :ref:`String<class_String>` path, :ref:`Array<class_Array>` progress=[] **)**
  101. Returns the status of a threaded loading operation started with :ref:`load_threaded_request<class_ResourceLoader_method_load_threaded_request>` for the resource at ``path``. See :ref:`ThreadLoadStatus<enum_ResourceLoader_ThreadLoadStatus>` for possible return values.
  102. An array variable can optionally be passed via ``progress``, and will return a one-element array containing the percentage of completion of the threaded loading.
  103. ----
  104. .. _class_ResourceLoader_method_load_threaded_request:
  105. - :ref:`Error<enum_@GlobalScope_Error>` **load_threaded_request** **(** :ref:`String<class_String>` path, :ref:`String<class_String>` type_hint="", :ref:`bool<class_bool>` use_sub_threads=false **)**
  106. Loads the resource using threads. If ``use_sub_threads`` is ``true``, multiple threads will be used to load the resource, which makes loading faster, but may affect the main thread (and thus cause game slowdowns).
  107. ----
  108. .. _class_ResourceLoader_method_set_abort_on_missing_resources:
  109. - void **set_abort_on_missing_resources** **(** :ref:`bool<class_bool>` abort **)**
  110. Changes the behavior on missing sub-resources. The default behavior is to abort loading.
  111. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  112. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  113. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  114. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  115. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  116. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`