Version: 2022.3
言語: 日本語
WebGL アプリケーションのビルド
Distribution size and code stripping

アセットバンドルによるロード時間の短縮

コンテンツを開始する前にすべてのアセットデータを事前にダウンロードする必要があるため、アセットを主要データファイルから AssetBundles (アセットバンドル) に移動することを検討してください。アセットを アセットバンドル に移動すると、コンテンツをロードするための小さいシーンを作成でき、ユーザーがコンテンツを読み進めるにつれて、必要に応じて動的にロードすることができます。アセットバンドル は、アセットデータのメモリ の管理にも役立ちます。AssetBundle.Unload を呼び出すことで、不要になったアセットのアセットデータをメモリからアンロードできます。

WebGL プラットフォームで アセットバンドル を使用する場合に、以下を考慮する必要があります。

  • メインビルドで使用されていないアセットバンドルでクラスタイプを使用すると、Unity はそれらのクラスのコードをビルドから削除することがあります。 アセットバンドルからアセットをロードしようとすると失敗する原因になる場合があります。それを修正するには BuildPlayerOptions.assetBundleManifestPath を使用するか、他のオプションについては 配信サイズとコードストリッピング を参照してください。

  • WebGL はスレッドをサポートしていません。http ダウンロードはダウンロードが終了したときにのみ利用可能になるため、Unity WebGL ビルドはダウンロードが完了した時にメインスレッド上のアセットバンドルデータを解凍してメインスレッドをブロックする必要があります。この中断を回避するために、LZMA アセットバンドル圧縮 は WebGL 上のアセットバンドルでは使用できません。代わりに LZ4 を使用して圧縮します。LZ4 は、必要に応じて効率的に解凍されます。 LZ4 よりも小さい圧縮サイズが必要な場合は、Web サーバーを設定して、アセットバンドルで (LZ4 圧縮に加えて) gzip または Brotli 圧縮 を使用できます。これを行う方法について詳しくは、WebGL アプリケーションのデプロイ を参照してください。

  • WebGL では、UnityWebRequestAssetBundle.GetAssetBundle による AssetBundle のキャッシュをサポートしています。このメソッドは、ブラウザーの IndexedDB API を使用してユーザーのデバイスにキャッシュを保存します。ブラウザーによっては IndexedDB のサポートが制限されている場合があり、またどのブラウザーでもディスクにデータを保存する際にユーザーの承認を求める場合があります。詳細については、WebGL ブラウザーの互換性 を参照してください。

WebGL アプリケーションのビルド
Distribution size and code stripping