# Pré-carregar Recursos

Em alguns casos, um asset é adicionado à cena, mas não é usado imediatamente. Por exemplo, um arquivo de som pode ser reproduzido somente quando o jogador pressiona um botão. Nesse cenário, na primeira vez que o jogador pressiona o botão, o áudio pode tocar com alguns segundos de atraso, porque o arquivo só é baixado quando necessário.

Para evitar esse problema, use o `AssetLoad` component para garantir que esses assets sejam baixados e estejam prontos para uso antes de serem necessários.

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

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

Os assets listados no `AssetLoad` component são baixados e adicionados à memória, garantindo que estejam instantaneamente disponíveis quando a cena precisar carregá-los.

{% hint style="info" %}
**Nota:** Você pode colocar o `AssetLoad` component em qualquer entity (não apenas no RootEntity), e pode usá-lo em quantas entities forem necessárias. Isso pode ser útil para lidar com estados de carregamento separados para diferentes níveis ou regiões da sua cena.

O `AssetLoad` component é usado para adicionar assets à memória, não para removê-los. Remover um asset da lista em `AssetLoad.create` não liberará memória.
{% endhint %}

{% hint style="info" %}
**Nota:** Se um asset for usado imediatamente quando a cena carrega (por exemplo, um modelo GLB colocado na cena, ou um som de fundo que toca continuamente), não há necessidade de usar o `AssetLoad` component, já que ele já está sendo baixado.

Tenha cuidado ao adicionar assets a `AssetLoad.create`, e pré-carregue apenas assets que não são necessários na inicialização da cena para evitar custos de performance desnecessários.
{% endhint %}
