ResourceLoader
Hereda: Object
Un singleton para cargar archivos de recursos.
Descripción
Un singleton utilizado para cargar archivos de recursos desde el sistema de archivos.
Utiliza las muchas clases ResourceFormatLoader registradas en el motor (ya sean integradas o de un plugin) para cargar archivos en la memoria y convertirlos a un formato que pueda ser utilizado por el motor.
Nota: Primero debes importar los archivos al motor para cargarlos usando load(). Si quieres cargar Images en tiempo de ejecución, puedes usar Image.load(). Si quieres importar archivos de audio, puedes usar el fragmento de código descrito en AudioStreamMP3.data.
Nota: Los archivos que no son de recursos, como los archivos de texto plano, no se pueden leer usando ResourceLoader. Utiliza FileAccess para esos archivos en su lugar, y ten en cuenta que los archivos que no son de recursos no se exportan de forma predeterminada (consulta las notas en la descripción de la clase FileAccess para obtener instrucciones sobre cómo exportarlos).
Tutoriales
Métodos
void |
add_resource_format_loader(format_loader: ResourceFormatLoader, at_front: bool = false) |
get_cached_ref(path: String) |
|
get_dependencies(path: String) |
|
get_resource_uid(path: String) |
|
has_cached(path: String) |
|
list_directory(directory_path: String) |
|
load(path: String, type_hint: String = "", cache_mode: CacheMode = 1) |
|
load_threaded_get(path: String) |
|
load_threaded_get_status(path: String, progress: Array = []) |
|
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) |
Enumeraciones
enum ThreadLoadStatus: 🔗
ThreadLoadStatus THREAD_LOAD_INVALID_RESOURCE = 0
El recurso no es válido, o no ha sido cargado con load_threaded_request().
ThreadLoadStatus THREAD_LOAD_IN_PROGRESS = 1
El recurso todavía está siendo cargado.
ThreadLoadStatus THREAD_LOAD_FAILED = 2
Ocurrió algún error durante la carga y falló.
ThreadLoadStatus THREAD_LOAD_LOADED = 3
El recurso se cargó correctamente y se puede acceder a él a través de load_threaded_get().
enum CacheMode: 🔗
CacheMode CACHE_MODE_IGNORE = 0
Ni el recurso principal (el que se solicitó cargar) ni ninguno de sus subrecursos se recuperan de la caché ni se almacenan en ella. Las dependencias (recursos externos) se cargan con CACHE_MODE_REUSE.
CacheMode CACHE_MODE_REUSE = 1
El recurso principal (el que se solicitó cargar), sus subrecursos y sus dependencias (recursos externos) se recuperan de la caché si están presentes, en lugar de cargarse. Los que no están en caché se cargan y luego se almacenan en la caché. Las mismas reglas se propagan recursivamente por el árbol de dependencias (recursos externos).
CacheMode CACHE_MODE_REPLACE = 2
Como CACHE_MODE_REUSE, pero la caché se comprueba para el recurso principal (el que se solicitó cargar), así como para cada uno de sus subrecursos. Aquellos que ya están en la caché, siempre que los tipos cargados y cacheados coincidan, ven sus datos actualizados desde el almacenamiento en las instancias ya existentes. De lo contrario, se recrean como objetos completamente nuevos.
CacheMode CACHE_MODE_IGNORE_DEEP = 3
Como CACHE_MODE_IGNORE, pero se propaga recursivamente por el árbol de dependencias (recursos externos).
CacheMode CACHE_MODE_REPLACE_DEEP = 4
Como CACHE_MODE_REPLACE, pero se propaga recursivamente por el árbol de dependencias (recursos externos).
Descripciones de Métodos
void add_resource_format_loader(format_loader: ResourceFormatLoader, at_front: bool = false) 🔗
Registra un nuevo ResourceFormatLoader. El ResourceLoader utilizará el ResourceFormatLoader como se describe en load().
Este método se realiza implícitamente para los ResourceFormatLoaders escritos en GDScript (consulta ResourceFormatLoader para obtener más información).
bool exists(path: String, type_hint: String = "") 🔗
Devuelve si existe un recurso reconocido para la path dada.
Se puede utilizar un type_hint opcional para especificar con más detalle el tipo de Resource que debe manejar el ResourceFormatLoader. Cualquier cosa que herede de Resource puede ser utilizado como un type hint, por ejemplo Image.
Nota: Si utilizas Resource.take_over_path(), este método devolverá true para la ruta tomada incluso si el recurso no fue guardado (es decir, existe solo en la caché de recursos).
Resource get_cached_ref(path: String) 🔗
Devuelve la referencia al recurso en caché para la path dada.
Nota: Si el recurso no está en caché, el Resource devuelto no será válido.
PackedStringArray get_dependencies(path: String) 🔗
Devuelve las dependencias del recurso en la path dada.
Cada dependencia es una string que puede dividirse en secciones mediante ::. Puede haber una sección o tres secciones, siendo la segunda sección siempre vacía. Cuando hay una sección, contiene la ruta del archivo. Cuando hay tres secciones, la primera sección contiene el UID y la tercera sección contiene la ruta de respaldo.
for dependencia in ResourceLoader.get_dependencies(path):
if dependencia.contains("::"):
print(dependency.get_slice("::", 0)) # Imprime el UID.
print(dependency.get_slice("::", 2)) # Imprime la ruta de respaldo.
else:
print(dependency) # Imprime la ruta.
PackedStringArray get_recognized_extensions_for_type(type: String) 🔗
Devuelve la lista de extensiones reconocidas para un tipo de recurso.
int get_resource_uid(path: String) 🔗
Devuelve el ID asociado con una ruta de recurso dada, o -1 cuando no existe dicho ID.
bool has_cached(path: String) 🔗
Devuelve si un recurso en caché está disponible para la path dada.
Una vez que un recurso ha sido cargado por el motor, se almacena en la memoria caché para un acceso más rápido, y las futuras llamadas al método load() utilizarán la versión en caché. El recurso en caché puede ser sobrescrito usando Resource.take_over_path() en un nuevo recurso para esa misma ruta.
PackedStringArray list_directory(directory_path: String) 🔗
Lista un directorio, devolviendo todos los recursos y subdirectorios contenidos dentro. Los archivos de recursos tienen los nombres de archivo originales tal como se ven en el editor antes de la exportación. Los directorios tienen "/" añadido.
# Imprime ["extra_data/", "model.gltf", "model.tscn", "model_slime.png"]
print(ResourceLoader.list_directory("res://assets/enemies/slime"))
Nota: El orden de los archivos y directorios devueltos por este método no es determinista, y puede variar entre sistemas operativos.
Nota: Para recorrer normalmente el sistema de archivos, consulta DirAccess.
Resource load(path: String, type_hint: String = "", cache_mode: CacheMode = 1) 🔗
Carga un recurso en la path dada, almacenando el resultado en caché para un acceso posterior.
Se consultan secuencialmente los ResourceFormatLoader registrados para encontrar el primero que pueda manejar la extensión del archivo, y luego intenta la carga. Si la carga falla, también se intentan los ResourceFormatLoader restantes.
Se puede utilizar un type_hint opcional para especificar aún más el tipo de Resource que debe ser manejado por el ResourceFormatLoader. Cualquier cosa que herede de Resource puede ser utilizada como una pista de tipo, por ejemplo Image.
La propiedad cache_mode define si y cómo la caché debe ser utilizada o actualizada al cargar el recurso.
Devuelve un recurso vacío si ningún ResourceFormatLoader pudo manejar el archivo, e imprime un error si no se encuentra ningún archivo en la ruta especificada.
GDScript tiene un método incorporado simplificado @GDScript.load() que puede ser utilizado en la mayoría de las situaciones, dejando el uso de ResourceLoader para escenarios más avanzados.
Nota: Si ProjectSettings.editor/export/convert_text_resources_to_binary es true, @GDScript.load() no podrá leer los archivos convertidos en un proyecto exportado. Si dependes de la carga en tiempo de ejecución de archivos presentes dentro del PCK, establece ProjectSettings.editor/export/convert_text_resources_to_binary a false.
Nota: Las rutas relativas se prefijarán con "res://" antes de la carga, para evitar resultados inesperados asegúrate de que tus rutas sean absolutas.
Resource load_threaded_get(path: String) 🔗
Devuelve el recurso cargado por load_threaded_request().
Si se llama a esto antes de que el hilo de carga haya terminado (es decir, load_threaded_get_status() no es THREAD_LOAD_LOADED), el hilo que llama se bloqueará hasta que el recurso haya terminado de cargarse. Sin embargo, se recomienda utilizar load_threaded_get_status() para saber cuándo la carga se ha completado realmente.
ThreadLoadStatus load_threaded_get_status(path: String, progress: Array = []) 🔗
Devuelve el estado de una operación de carga por hilos iniciada con load_threaded_request() para el recurso en path.
Una variable de array puede ser pasada opcionalmente a través de progress, y devolverá un array de un elemento que contiene la relación de terminación de la carga por hilos (entre 0.0 y 1.0).
Nota: La forma recomendada de usar este método es llamarlo durante diferentes frames (por ejemplo, en Node._process(), en lugar de un bucle).
Error load_threaded_request(path: String, type_hint: String = "", use_sub_threads: bool = false, cache_mode: CacheMode = 1) 🔗
Carga el recurso usando hilos. Si use_sub_threads es true, se utilizarán múltiples hilos para cargar el recurso, lo que hace que la carga sea más rápida, pero puede afectar al hilo principal (y por lo tanto causar ralentizaciones en el juego).
El parámetro cache_mode define si y cómo la caché debe ser utilizada o actualizada al cargar el recurso.
void remove_resource_format_loader(format_loader: ResourceFormatLoader) 🔗
Sobrescribe el registro del ResourceFormatLoader dado.
void set_abort_on_missing_resources(abort: bool) 🔗
Cambia el comportamiento sobre los subrecursos faltantes. El comportamiento por defecto es abortar la carga.