ResourceLoader

Inherits:Object

A singleton for loading resource files.

Description

A singleton used to load resource files from the filesystem.

It uses the manyResourceFormatLoader 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.

Note: You have to import the files into the engine first to load them usingload(). If you want to loadImages at run-time, you may useImage.load(). If you want to import audio files, you can use the snippet described inAudioStreamMP3.data.

Note: Non-resource files such as plain text files cannot be read usingResourceLoader. UseFileAccess for those files instead, and be aware that non-resource files are not exported by default (see notes in theFileAccess class description for instructions on exporting them).

Tutorials

Methods

void

add_resource_format_loader(format_loader:ResourceFormatLoader, at_front:bool = false)

bool

exists(path:String, type_hint:String = "")

Resource

get_cached_ref(path:String)

PackedStringArray

get_dependencies(path:String)

PackedStringArray

get_recognized_extensions_for_type(type:String)

int

get_resource_uid(path:String)

bool

has_cached(path:String)

PackedStringArray

list_directory(directory_path:String)

Resource

load(path:String, type_hint:String = "", cache_mode:CacheMode = 1)

Resource

load_threaded_get(path:String)

ThreadLoadStatus

load_threaded_get_status(path:String, progress:Array = [])

Error

load_threaded_request(path:String, type_hint:String = "", use_sub_threads:bool = false, cache_mode:CacheMode = 1)

void

remove_resource_format_loader(format_loader:ResourceFormatLoader)

void

set_abort_on_missing_resources(abort:bool)


Enumerations

enumThreadLoadStatus:🔗

ThreadLoadStatusTHREAD_LOAD_INVALID_RESOURCE =0

The resource is invalid, or has not been loaded withload_threaded_request().

ThreadLoadStatusTHREAD_LOAD_IN_PROGRESS =1

The resource is still being loaded.

ThreadLoadStatusTHREAD_LOAD_FAILED =2

Some error occurred during loading and it failed.

ThreadLoadStatusTHREAD_LOAD_LOADED =3

The resource was loaded successfully and can be accessed viaload_threaded_get().


enumCacheMode:🔗

CacheModeCACHE_MODE_IGNORE =0

Neither the main resource (the one requested to be loaded) nor any of its subresources are retrieved from cache nor stored into it. Dependencies (external resources) are loaded withCACHE_MODE_REUSE.

CacheModeCACHE_MODE_REUSE =1

The main resource (the one requested to be loaded), its subresources, and its dependencies (external resources) are retrieved from cache if present, instead of loaded. Those not cached are loaded and then stored into the cache. The same rules are propagated recursively down the tree of dependencies (external resources).

CacheModeCACHE_MODE_REPLACE =2

LikeCACHE_MODE_REUSE, but the cache is checked for the main resource (the one requested to be loaded) as well as for each of its subresources. Those already in the cache, as long as the loaded and cached types match, have their data refreshed from storage into the already existing instances. Otherwise, they are recreated as completely new objects.

CacheModeCACHE_MODE_IGNORE_DEEP =3

LikeCACHE_MODE_IGNORE, but propagated recursively down the tree of dependencies (external resources).

CacheModeCACHE_MODE_REPLACE_DEEP =4

LikeCACHE_MODE_REPLACE, but propagated recursively down the tree of dependencies (external resources).


Method Descriptions

voidadd_resource_format_loader(format_loader:ResourceFormatLoader, at_front:bool = false)🔗

Registers a newResourceFormatLoader. The ResourceLoader will use the ResourceFormatLoader as described inload().

This method is performed implicitly for ResourceFormatLoaders written in GDScript (seeResourceFormatLoader for more information).


boolexists(path:String, type_hint:String = "")🔗

Returns whether a recognized resource exists for the givenpath.

An optionaltype_hint can be used to further specify theResource type that should be handled by theResourceFormatLoader. Anything that inherits fromResource can be used as a type hint, for exampleImage.

Note: If you useResource.take_over_path(), this method will returntrue for the taken path even if the resource wasn't saved (i.e. exists only in resource cache).


Resourceget_cached_ref(path:String)🔗

Returns the cached resource reference for the givenpath.

Note: If the resource is not cached, the returnedResource will be invalid.


PackedStringArrayget_dependencies(path:String)🔗

Returns the dependencies for the resource at the givenpath.

Note: The dependencies are returned with slices separated by::. You can useString.get_slice() to get their components.

fordependencyinResourceLoader.get_dependencies(path):print(dependency.get_slice("::",0))# Prints the UID.print(dependency.get_slice("::",2))# Prints the path.

PackedStringArrayget_recognized_extensions_for_type(type:String)🔗

Returns the list of recognized extensions for a resource type.


intget_resource_uid(path:String)🔗

Returns the ID associated with a given resource path, or-1 when no such ID exists.


boolhas_cached(path:String)🔗

Returns whether a cached resource is available for the givenpath.

Once a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to theload() method will use the cached version. The cached resource can be overridden by usingResource.take_over_path() on a new resource for that same path.


PackedStringArraylist_directory(directory_path:String)🔗

Lists a directory (as example: "res://assets/enemies"), returning all resources contained within. The resource files are the original file names as visible in the editor before exporting.


Resourceload(path:String, type_hint:String = "", cache_mode:CacheMode = 1)🔗

Loads a resource at the givenpath, caching the result for further access.

The registeredResourceFormatLoaders 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.

An optionaltype_hint can be used to further specify theResource type that should be handled by theResourceFormatLoader. Anything that inherits fromResource can be used as a type hint, for exampleImage.

Thecache_mode property defines whether and how the cache should be used or updated when loading the resource. SeeCacheMode for details.

Returns an empty resource if noResourceFormatLoader could handle the file, and prints an error if no file is found at the specified path.

GDScript has a simplified@GDScript.load() built-in method which can be used in most situations, leaving the use ofResourceLoader for more advanced scenarios.

Note: IfProjectSettings.editor/export/convert_text_resources_to_binary istrue,@GDScript.load() will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, setProjectSettings.editor/export/convert_text_resources_to_binary tofalse.

Note: Relative paths will be prefixed with"res://" before loading, to avoid unexpected results make sure your paths are absolute.


Resourceload_threaded_get(path:String)🔗

Returns the resource loaded byload_threaded_request().

If this is called before the loading thread is done (i.e.load_threaded_get_status() is notTHREAD_LOAD_LOADED), the calling thread will be blocked until the resource has finished loading. However, it's recommended to useload_threaded_get_status() to known when the load has actually completed.


ThreadLoadStatusload_threaded_get_status(path:String, progress:Array = [])🔗

Returns the status of a threaded loading operation started withload_threaded_request() for the resource atpath. SeeThreadLoadStatus for possible return values.

An array variable can optionally be passed viaprogress, and will return a one-element array containing the ratio of completion of the threaded loading (between0.0 and1.0).

Note: The recommended way of using this method is to call it during different frames (e.g., inNode._process(), instead of a loop).


Errorload_threaded_request(path:String, type_hint:String = "", use_sub_threads:bool = false, cache_mode:CacheMode = 1)🔗

Loads the resource using threads. Ifuse_sub_threads istrue, multiple threads will be used to load the resource, which makes loading faster, but may affect the main thread (and thus cause game slowdowns).

Thecache_mode property defines whether and how the cache should be used or updated when loading the resource. SeeCacheMode for details.


voidremove_resource_format_loader(format_loader:ResourceFormatLoader)🔗

Unregisters the givenResourceFormatLoader.


voidset_abort_on_missing_resources(abort:bool)🔗

Changes the behavior on missing sub-resources. The default behavior is to abort loading.


User-contributed notes

Please read theUser-contributed notes policy before submitting a comment.