콘텐츠가 사용되기 전에 모든 에셋 데이터를 미리 다운로드해야 하므로, 에셋을 기본 데이터 파일에서 에셋 번들로 옮기는 것이 좋습니다. 이렇게 하면 사용자가 콘텐츠를 진행하면서 필요에 따라 빠르게 로드되며 에셋을 동적으로 로드하는 작은 로더 씬을 콘텐츠용으로 만들 수 있습니다. 에셋 번들은 에셋 데이터 메모리 관리에도 도움이 됩니다. 더 이상 필요하지 않은 에셋에 대해서는 AssetBundle.Unload를 호출하여 메모리에서 에셋 데이터를 언로드할 수 있습니다.
웹 플랫폼에서 에셋 번들을 사용할 때 고려해야 할 사항은 다음과 같습니다.
메인 빌드에서 사용되지 않는 클래스 타입을 에셋 번들에 사용하는 경우 Unity는 해당 클래스에 대한 코드를 빌드에서 스트리핑할 수 있습니다. 이로 인해 에셋 번들에서 에셋을 로드하려고 할 때 실패할 수 있습니다. 이 문제를 해결하려면 BuildPlayerOptions.assetBundleManifestPath를 사용하고, 다른 옵션의 경우 배포 크기 및 코드 스트리핑을 참조하십시오.
WebGL 그래픽스 API는 스레딩을 지원하지 않습니다. Http 다운로드는 다운로드가 완료된 후에만 사용할 수 있으므로, Unity 웹 플랫폼 빌드는 다운로드가 완료된 후 메인 스레드에서 에셋 번들 데이터의 압축을 풀어야 하며 이로 인해 메인 스레드가 차단됩니다. 이러한 차단을 방지하기 위해 웹의 에셋 번들에는 LZMA 에셋 번들 압축을 사용할 수 없습니다. 대신 에셋 번들은 LZ4를 사용하여 압축되며, 이는 필요에 따라 효율적으로 압축 해제됩니다. LZ4가 제공하는 것보다 더 작은 압축 크기가 필요한 경우, 에셋 번들에서 LZ4 압축 외에 gzip 또는 Brotli 압축을 사용하도록 웹 서버를 설정할 수 있습니다. 이에 대한 자세한 방법은 압축 빌드 배포 기술 자료를 참조하십시오.
웹 플랫폼은 UnityWebRequestAssetBundle.GetAssetBundle을 사용하여 캐시하는 파일 시스템 기반 에셋 번들을 지원하지 않습니다. 대신 WebRequest 응답은 브라우저에 의해 캐시됩니다. 자세한 내용은 웹에서의 캐시 동작을 참조하십시오. 따라서 에셋 번들이 로드될 때 전체 에셋 번들 파일이 메모리에 유지되므로, 사용하지 않는 에셋 번들은 특히 크기가 큰 경우 즉시 언로드해야 합니다.