推奨される以下の Player 設定を使用して、Unity ウェブプラットフォーム用にビルドを最適化します。
Edit > Project settings > Player を選択して設定を行います。各設定の詳細については、Player 設定を参照してください。
| 設定 | 目的に合わせた推奨設定 | 説明 |
|---|---|---|
| API Compatibility Level | .NET Standard 2.1 | より小さいビルドを生成します。 |
| IL2CPP Code Generation | Faster (smaller) builds | ビルドサイズとイテレーションに最適化されたコードを生成します。 |
| Managed Stripping Level | 高 | より小さなビルドを作成するために高レベルのマネージストリッピングを行います。 |
Publishing Settings セクションで、推奨される以下の設定を行います。
| 設定 | 目的に合わせた推奨設定 | 説明 |
|---|---|---|
| Compression Format | Brotli | Brotli で圧縮されたファイルは小さくなります。 |
| データキャッシング | 有効 | キャッシュされたデータを後続の実行で再度ダウンロードする必要がなくなるため、実行速度が向上します (コンテンツが変更されていない場合)。 |
| Debug Symbols | Off | デバッグシンボルを使用すると、アプリケーションが遅くなる場合があります。 |
| Enable Exceptions | なし | オーバーヘッドのない例外については、代わりに Target WebAssembly 2023 を有効にします。 |
| Target WebAssembly 2023 | Enable | Web Assembly 2023 機能セットには、プロジェクトの最適化をサポートする機能が含まれています。 |
| Maximum Memory Size (MB) | 必要なメモリの量を MB 単位で入力 | Unity ウェブは、ビルドで最大 4096 MB のメモリをサポートします。 |
API Compatibility Level 設定では、プロジェクトで使用できる .NET API を選択します。推奨される設定は .Net Standard 2.1 です。この設定は生成されるビルドのサイズが小さく、クロスプラットフォームをサポートしているためです。ただし、利用するプラットフォームが .Net Standard 2.1 を完全にサポートしているかどうかを確認する必要があります。その他のオプションについては、ウェブの Player 設定を参照してください。
設定ではなく、スクリプトで API Compatibility Level を変更するには、以下のコードをスクリプトのいずれかに追加します。
PlayerSettings.SetApiCompatibilityLevel(namedBuildTarget, ApiCompatibilityLevel.NET_2_0);
IL2CPP Code Generation 設定を使用して、Unity が IL2CPP コード生成をどのように管理するかを設定します (プロジェクトで IL2CPP スクリプティングバックエンドを使用している場合)。
推奨されるビルドオプションは Faster (smaller) です。このオプションでは、生成されるビルドのサイズが小さく、コード生成量が少なくなり、ビルド時間が短縮されるためです。ウェブアプリケーションでは、ビルド時間を短縮することが不可欠です。ただし、この設定ではランタイムパフォーマンスが低下する可能性があります。
詳細については、IL2CPP の概要 を参照してください。
設定ではなく、スクリプトを使用してこの設定を有効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.SetIl2CppCodeGeneration(namedBuildTarget,
Il2CppCodeGeneration.OptimizeSize);
Managed Stripping Level を使用して、Unity リンカープロセスが、プロジェクトで使用するマネージ DLL から未使用のコードを削除する量を設定できます。推奨される設定は High です。これは、ストリッピングコードによって実行ファイルのサイズが大幅に縮小できるためです。これはウェブアプリケーションにとって重要です。ただし、以下のようなデメリットも考えられます。
一部のメソッドのマネージコードデバッグが機能しないことがあります。
カスタム link.xml ファイルの管理が必要な場合があります。
リフレクションコードパスの中には、同じ動作をしないものがあります。
詳細については、マネージコードストリッピング を参照してください。
設定ではなく、スクリプトを使用してこの設定を変更にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.SetManagedStrippingLevel(namedBuildTarget,
ManagedStrippingLevel.High);
リリースビルドファイルで使用する圧縮形式を選択します。Brotli は最も圧縮率が高く、Brotli 圧縮ファイルは gzip よりも小さいため、この設定が推奨されます。ウェブアプリケーションでは小さいファイルが適しています。ただし、Chrome と Firefox では、HTTPS 経由でウェブサイトへのアクセスが行われた場合のみ Brotli をサポートします。また、最近のほとんどのサーバーは Brotli をサポートしていますが、一部のサーバーではサポートしていません。対象のサーバーが Brotli をサポートしていることを確認してください。
圧縮形式の詳細については、ウェブアプリケーションのデプロイを参照してください。
設定ではなく、スクリプトを使用してこの設定を有効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.WebGL.compressionFormat = WebGLCompressionFormat.Brotli;
Data caching を有効にすると、コンテンツアセットデータがユーザーのマシンにキャッシュされます。データキャッシングを使用すると、アプリケーションの実行が高速になります。詳細については、ウェブのキャッシュ動作を参照してください。
設定ではなく、スクリプトを使用してこの設定を有効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.WebGL.dataCaching = true;
Debug Symbols 設定では、エラーが発生したときにデバッグシンボルが保持され、スタックトレースの最初の関数名が表示されるため、エラーの原因を特定しやすくなります。ビルドが不必要に大きくなったり、アプリケーションの処理速度が低下したりする可能性があるため、最終リリースビルドでは Debug Symbols を無効にすることをお勧めします。開発およびテスト中にこの設定を有効にすると、エラーの原因を特定しやすくなります。
設定ではなく、スクリプトを使用してこの設定を無効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.WebGL.debugSymbolMode = WebGLDebugSymbolMode.Off;
Enable Exceptions 設定では、ランタイムにエラーをどのように処理するかを選択できます。最終リリースビルドでは None オプションを選択することをお勧めします。この設定により、最高のパフォーマンスと最小のビルドが実現できるためです。
ただし、このオプションでは、例外がスローされるとコンテンツがエラーで停止するため、開発中とテスト中は、この例外の設定を有効にすることを推奨します。詳細については、ウェブの Player 設定 を参照してください。
設定ではなく、スクリプトを使用して例外を無効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.WebGL.exceptionSupport = WebGLExceptionSupport.None;
WebAssembly 2023 は WebAssembly 言語機能の 1 つで、パフォーマンスの向上とコードサイズの縮小を実現します。この設定を有効にすることを推奨します。
設定ではなく、スクリプトを使用してこの設定を有効にするには、以下のコードをいずれかのスクリプトに追加します。
PlayerSettings.WebGL.wasm2023 = true;
// PlayerSettings.WebGL.webAssemblyTable = true;
// PlayerSettings.WebGL.webAssemblyBigInt = true;
WebAssembly 2023 を使用せずに WebAssembly.Table または BigInt の機能を有効にするには、コードの最初の行を削除して、コメント行を削除します。
Unity はビルドに対して最大 4096 MB のメモリをサポートします。ほとんどのアプリケーションでは、2048 MB のメモリで十分です。ただし、より複雑なリアルタイム 3D 体験、特にデスクトップブラウザーの場合は、メモリ容量が多いほど効果的です。メモリが多いほど、より充実した大容量のシーンをより動的にロードできます。
ただし、バージョン 119 より前の Firefox と Chrome のブラウザーでは、2048 MB を超えるビルドに対して既知のバグがあります。
設定ではなく、スクリプトを使用して最大メモリを変更するには、以下のコードをスクリプトに追加し、数値を適切なメモリサイズに変更します。
PlayerSettings.WebGL.maximumMemorySize = 4096;