# Precargar recursos

En algunos casos, se añade un asset a la escena pero no se usa de inmediato. Por ejemplo, un archivo de sonido puede reproducirse solo cuando el jugador pulsa un botón. En este escenario, la primera vez que el jugador pulsa el botón, el audio puede reproducirse con un retraso de un par de segundos, porque el archivo solo se descarga cuando es necesario.

Para evitar este problema, utiliza el `AssetLoad` componente para asegurar que estos assets se descarguen y estén listos para usarse antes de que se necesiten.

```ts
import { AssetLoad } from "@dcl/sdk/ecs"

AssetLoad.create(engine.RootEntity, {
  assets: [
    "assets/scene/bundle1/explosionSound.mp3",
    "assets/scene/bundle1/explosion.glb",
  ],
})
```

Los assets listados en el `AssetLoad` componente se descargan y se añaden a la memoria, asegurando que estén disponibles instantáneamente cuando la escena necesite cargarlos.

{% hint style="info" %}
**Nota:** Puedes colocar el `AssetLoad` componente en cualquier entidad (no solo en RootEntity), y puedes usarlo en tantas entidades como sea necesario. Esto puede ser útil para manejar estados de carga separados para diferentes niveles o regiones de tu escena.

El `AssetLoad` componente se usa para añadir assets a la memoria, no para eliminarlos. Quitar un asset de la lista en `AssetLoad.create` no liberará memoria.
{% endhint %}

{% hint style="info" %}
**Nota:** 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 suena continuamente), no es necesario usar el `AssetLoad` componente, ya que ya se está descargando.

Sé cauto al añadir assets a `AssetLoad.create`, y solo precarga assets que no se requieran al inicio de la escena para evitar costes de rendimiento innecesarios.
{% endhint %}
