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