Precargar recursos
Precargar recursos permite que los assets se descarguen al iniciar la escena para que estén listos cuando el jugador interactúe con ellos por primera vez.
En algunos casos, se agrega un asset a la escena, pero no se usa de inmediato. Por ejemplo, un archivo de sonido puede reproducirse solo cuando el jugador presiona un botón. En este escenario, la primera vez que el jugador presiona el botón, el audio puede reproducirse un par de segundos demasiado tarde, porque el archivo solo se descarga cuando se necesita.
Para evitar este problema, usa el AssetLoad component para asegurarte de que estos assets se descarguen y estén listos para usar antes de que se necesiten.
import { AssetLoad } from "@dcl/sdk/ecs"
AssetLoad.create(engine.RootEntity, {
assets: [
"assets/scene/bundle1/explosionSound.mp3",
"assets/scene/bundle1/explosion.glb",
],
})Los assets enumerados en el AssetLoad component se descargan y se agregan a la memoria, lo que garantiza que estén disponibles al instante cuando la escena necesite cargarlos.
Algunas consideraciones importantes:
Puedes colocar el
AssetLoadcomponent en cualquier entity (no solo en RootEntity), y puedes usarlo en tantas entities como sea necesario. Esto puede ser útil para manejar estados de carga separados para distintos niveles o regiones de tu escena.La
AssetLoadcomponent se usa para agregar assets a la memoria, no para eliminarlos. Quitar un asset de la lista enAssetLoad.createno liberará memoria.Si un asset se usa inmediatamente cuando la escena se carga (por ejemplo, un modelo GLB colocado en la escena o un sonido de fondo que se reproduce continuamente), no hay necesidad de usar el
AssetLoadcomponent, ya que ya se está descargando.Ten cuidado al agregar assets a
AssetLoad.create, y solo precarga assets que no sean necesarios al inicio de la escena para evitar costos de rendimiento innecesarios.Solo puedes precargar assets que se hayan subido como parte de los archivos de la escena. Esta función no funcionará para precargar imágenes desde una URL externa
Reaccionar al estado de carga
Precargar assets es más útil si tu escena puede reaccionar cuando cada asset termina de descargarse. Por ejemplo, es posible que quieras mantener una pantalla de carga hasta que cada asset esté listo, mostrar el progreso al jugador o manejar de forma elegante un asset que no pudo descargarse.
Para hacer un seguimiento de esto, usa el assetLoadLoadingStateSystem. Llama a su registerAssetLoadLoadingStateEntity método, pasando la entity que contiene el AssetLoad component y una función de callback. El callback se ejecuta cada vez que cambia el estado de carga de uno de los assets de esa entity.
El callback recibe un objeto con las siguientes propiedades:
asset: La ruta del asset cuyo estado cambió. Esto coincide con una de las cadenas que enumeraste en elAssetLoadcomponent.currentState: Un valor delLoadingStateenum, que describe el nuevo estado de ese asset.
La LoadingState enum puede contener los siguientes valores:
LoadingState.LOADING: El asset se está descargando actualmente.LoadingState.FINISHED: El asset terminó de descargarse correctamente y está listo para usar.LoadingState.FINISHED_WITH_ERROR: El asset se encontró, pero ocurrió un error al descargarlo.LoadingState.NOT_FOUND: No se encontró ningún asset en la ruta proporcionada.LoadingState.UNKNOWN: El estado del asset no se conoce.
El siguiente ejemplo usa el estado de carga para cambiar el color de una entity según cómo progresa su precarga:
Última actualización