Version: 2022.3
言語: 日本語
高度な概要
WebGL のテクスチャ圧縮

WebGL の Player 設定

このページでは、WebGL プラットフォームに特化した Player 設定について説明します。一般的な Player 設定の説明は、Player 設定を参照してください。

WebGL Player 設定
WebGL Player 設定

以下のセクションのプロパティが説明されています。

ノート: Icon セクションが WebGL プラットフォームの Player 設定に表示されますが、そのセクションには設定がありません。

WebGL の Publishing Settings の詳細は、WebGL のビルドと実行 を参照してください。

Resolution and Presentation

このセクションでは、スクリーンモードとデフォルトサイズをカスタマイズできます。

WebGL プラットフォームの Resolution 設定
WebGL プラットフォームの Resolution 設定

Resolution

設定 機能
Default Canvas Width WebGL キャンバス要素の幅を設定します。
Default Canvas Height WebGL キャンバス要素の高さを設定します。
Run In Background これを有効にすると、キャンバスやブラウザーウィンドウがフォーカスを失ったときにもコンテンツを継続して実行できます。

WebGL Template

WebGL プロジェクトに使用するテンプレートを選択します。

  • Default ページはグレーのキャンバスにプログレスバーがあるシンプルな白いページです。
  • Minimal ページには WebGL コンテンツを実行するのに必要な定型コードのみが含まれます。
  • PWA ページには、ウェブマニフェストファイルとサービスワーカーコードを含む Progressive Web App があります。

独自のテンプレートを指定して、完成したゲームと同様の環境でゲームを実行することができます。WebGL テンプレートの使用 を参照してください。

Splash Image

Virtual Reality Splash Image 設定を使用して、XR ディスプレイのカスタムスプラッシュ画像を指定します。一般的なスプラッシュスクリーン の設定については、スプラッシュスクリーン を参照してください。

VR のスプラッシュスクリーン設定
VR のスプラッシュスクリーン設定

Other Settings

このセクションでは、以下のグループに分類されたさまざまなオプションをカスタマイズできます。

Rendering

これらの設定を使用して、WebGL プラットフォーム向けにゲームをレンダリングする方法をカスタマイズします。

WebGL プラットフォームの Rendering Player 設定
WebGL プラットフォームの Rendering Player 設定
設定 機能
Color Space レンダリングに GammaLinear どちらの色空間を使用するかを選択します。
2 つの色空間の違いの説明は リニアレンダリングの概要 を参照してください。
Auto Graphics API これを無効にすると、グラフィックス API を手動で選択して並べ替えることができます。デフォルトではこのオプションは有効になっており、Unity に WebGL2.0 が含まれ、WebGL2.0 がサポートされない場合の代替として WebGL1.0 が使用されます。
Static Batching このオプションを有効にして、静的バッチ処理を行います。
Dynamic Batching これを有効にして、ダイナミックバッチング をビルドに使用します (デフォルトでは有効になっています)。
Graphics Jobs これを有効にすると、Unity がグラフィックスタスク (レンダリングのループ) を他の CPU コア上で動作するワーカースレッドにオフロードします。これを使用して、しばしばボトルネックとなるメインスレッドの Camera.Render で費やされる時間を短縮します。
ノート この機能は実験的です。プロジェクトのパフォーマンスが向上しない場合があり、クラッシュの原因になる可能性があります。
Texture compression format WebGL のテクスチャ圧縮形式を設定するには、DXTETC2、またはASTCを選択します。正しいフォーマットを選択する方法については、テクスチャ圧縮フォーマットの概要 を参照し、スクリプトからデスクトップおよびモバイルブラウザー用のビルドを作成する方法については、WebGL のテクスチャ圧縮 を参照してください。
Lightmap Encoding ライトマップのエンコードを設定するには、Low QualityNormal QualityHigh Quality のいずれかを選択します。この設定は、ライトマップのエンコードスキームと圧縮形式に影響します。
HDR Cubemap Encoding HDR キューブマップのエンコードを設定するには、Low QualityNormal QualityHigh Quality のいずれかを選択します。この設定は、HDR キューブマップのエンコードスキームと圧縮形式に影響します。
Lightmap Streaming Enabled ライトマップに Mipmap Streaming を使用するかどうかを設定します。Unity は、ライトマップを生成するときに、この設定をすべてのライトマップに適用します。
ノート: この設定を使用するには、Texture Streaming Quality 設定を有効にする必要があります。
Streaming Priority ミップマップストリーミング でライトマップの優先順位を設定します。Unity はこれらを生成すると、その設定すべてのライトマップに適用します。
正の数値が優先されます。有効な値の範囲は –128 から 127 です。
Frame Timing Stats これを有効にすると、CPU/GPUフレームタイミング統計を収集します。
Virtual Texturing Virtual Texturing を有効にするかどうかを示します。
ノート: この設定を有効にするには、Unity エディターの再起動が必要です。
Shader precision model シェーダーで使用されるサンプラーのデフォルトの精度を制御します。詳しくは、シェーダーのデータ型と精度 を参照してください。
360 Stereo Capture Unity がステレオスコピック 360 の画像とビデオをキャプチャできるかどうかを示します。有効にすると、Unity は 360 キャプチャをサポートするために追加のシェーダーバリアントをコンパイルします (現在はWindows/OSX のみ)。有効にすると、Stereo RenderCubemap 呼び出し 中に enable_360_capture キーワードが追加されます。このキーワードは Stereo RenderCubemap 関数の外では発生しないことに注意してください。詳細は Stereo 360 Image and Video Capture を参照してください。
Load/Store Action Debug Mode ビルドしたアプリケーションでレンダリングの問題を引き起こす可能性のある未定義のピクセルをハイライト表示します。ハイライトは、ゲームビュー、または、ビルド設定で Development Build を選択してビルドされたアプリケーションにのみ表示されます。LoadStoreActionDebugModeSettings を参照してください。
Editor Only ゲームビューで未定義のピクセルをハイライトしますが、ビルドしたアプリケーションではハイライトしません。

Configuration

WebGL プラットフォームの Configuration 設定
WebGL プラットフォームの Configuration 設定
プロパティ 説明
スクリプティングバックエンド 使用するスクリプティングバックエンドを選択します。スクリプトバックエンドは、Unity が Project 内の C# コードをどのようにコンパイルし、実行するかを決定します。
Mono C# コードを .NET 共通中間言語 (CIL) にコンパイルし、共通言語ランタイムを使用して CIL を実行します。詳細は Mono を参照してください。
IL2CPP C# コードを CIL にコンパイルし、CIL を C++ に変換し、その C++ をネイティブマシンコードにコンパイルします。これがランタイムで直接実行されます。詳細は IL2CPP を参照してください。
API Compatibility Level プロジェクトで使用可能にする .NET API を選択します。この設定は、サードパーティのライブラリとの互換性に影響する可能性があります。ただし、エディター固有のコード (エディターディレクトリ内のコードや、エディター固有のアセンブリ定義内のコード) には影響しません。

ヒント: サードパーティのアセンブリに問題がある場合は、以下の API Compatibility Level セクションに提案されている方法を試してみてください。
.Net Standard 2.1 NET Standard 2.1 と互換性があります。より小さなビルドを生成し、完全なクロスプラットフォームサポートを提供します。
.Net Framework .NET Framework 4 との互換性があります。(.NET Framework 4 には、.NET Standard 2.0 プロファイルの全要素に加え、追加 API が含まれています。) .NET Standard 2.0 に含まれない API にアクセスするライブラリを使用する場合は、このオプションを選択してください。これを使用すると、より大きなビルドが生成されます。また、追加 API は、必ずしも全てのプラットフォームでサポートされるわけではありません。詳細は、追加のクラスライブラリアセンブリの参照 を参照してください。
IL2CPP Code Generation Unity が IL2CPP コード生成を管理する方法を定義します。このオプションは、IL2CPP スクリプトバックエンドを使用する場合にのみ使用できます。
Faster runtime ランタイムのパフォーマンス用に最適化されたコードを生成します。この設定はデフォルトで有効になっています。
Faster (smaller) builds ビルドサイズとイテレーションに重点を置いて最適化されたコードを生成します。生成されるコードが少なくなり、ビルドも小さくなりますが、汎用コードに関してランタイムのパフォーマンスが低下する場合があります。このオプションは、変更を加えて反復処理を行う場合など、ビルド時間の短縮が重要な場合に使用してください。
C++ Compiler Configuration IL2CPP で生成されたコードのコンパイル時に使用する C++ コンパイラーの設定を選択します。
ノート: このプロパティは、 Scripting BackendIL2CPP に設定されている場合以外は無効になります。
Use incremental GC インクリメンタルガベージコレクターを使用します。これは、ガベージコレクションを複数のフレームに分散させることで、フレーム持続時間中の、ガベージコレクション関連のスパイクを減らすものです。詳細は Automatic Memory Management を参照してください。
Allow downloads over HTTP HTTP 経由でのコンテンツのダウンロードを許可するかどうか指定します。選択可能なオプションは Not allowedAllowed in Development builds onlyAlways allowed です。デフォルトのオプションは Not allowed です。これは、より安全なプロトコルである HTTPS が推奨されるためです。
Active Input Handling ユーザーからの入力をどのように処理するか選択します。
Input Manager (old) デフォルトの Input ウィンドウを使用します。
Input System Package (New) 新しい Input システムを使用します。新しい Input System の使用を試すには、InputSystem パッケージ をインストールしてください。
Both 両方のシステムを同時に使います。

Shader Variant Loading

これらの設定を使用して、ランタイムにシェーダーが使用するメモリの量を制御します。

設定 説明 
Default chunk size (MB) 全てのプラットフォームに対して、ビルドされたアプリケーション内に Unity が保存する圧縮シェーダーバリアントデータチャンクの最大サイズを設定します。デフォルトは 16 です。詳細は シェーダーロード を参照してください。
Default chunk count 全てのプラットフォームに対して、Unity がメモリに保持する解凍チャンク数のデフォルト制限を設定します。デフォルトは 0 で、これは制限がないことを意味します。
Override このビルドターゲットの Default chunk sizeDefault chunk count のオーバーライドを有効にします。
Chunk size (MB) このビルドターゲットの Default chunk size (MB) の値をオーバーライドします。
Chunk count このビルドターゲットの Default chunk count の値をオーバーライドします。

API Compatibility Level

すべてのターゲットに対する Mono の API Compatibility Level (API 互換性レベル) を選択できます。時にはサードパーティ製の .NET ライブラリが、.NET 互換性レベル外の機能を使用することがあります。そのような場合に何が起きているか理解し、最良の修正処理を行うためには、以下を試みると良いでしょう。

  1. Windows 用 ILSpy をインストールします。
  2. API 互換性レベルに問題が疑われる .NET アセンブリを ILSpy にドラッグします。これらは Frameworks/Mono/lib/mono/YOURSUBSET/にあります。
  3. サードパーティ製のアセンブリをドラッグします。
  4. サードパーティ製のアセンブリを右クリックし、Analyze を選択します。
  5. 分析レポートの中で、Depends on セクションを調べます。サードパーティ製品依存でありながら、選択した .NET 互換性レベルで対応しないものはすべてここで赤字でハイライトされます。

Script Compilation

WebGL プラットフォーム用のスクリプトのコンパイル設定
WebGL プラットフォーム用のスクリプトのコンパイル設定
設定 機能
Scripting Define Symbols カスタムコンパイルフラグを設定します。詳細は、プラットフォーム依存コンパイル のドキュメントを参照してください。
Additional Compiler Arguments このリストにエントリーを追加して、Roslyn コンパイラーに追加の引数を渡します。追加の引数ごとに 1 つの新しいエントリーを使用します。
新しいエントリーを作成するには、 ‘+’ ボタンを押します。エントリーを削除するには、 ‘-’ ボタンを押します。
必要な引数をすべて追加したら、Apply ボタンをクリックして、追加した引数を今後のコンパイルに加えることができます。 Revert ボタンは、このリストを最近適用された状態にリセットします。
Suppress Common Warnings C#の警告 CS0169CS0649 を表示するには、この設定を無効にします。
Allow ‘unsafe’ Code 事前に定義されたアセンブリ (例えば Assembly-CSharp.dll) の ‘unsafe’ C# code をコンパイルするサポートを有効にします。
アセンブリ定義ファイル (.asmdef) の場合、.asmdef ファイルの 1 つをクリックし、表示されたインスペクターウィンドウでオプションを有効にします。
Use Deterministic Compilation この設定を無効にすると、-deterministic C# フラグでのコンパイルができなくなります。この設定を有効にすると、コンパイルされたアセンブリは、コンパイルされるたびにバイト単位で同一になります。
詳細については、Microsoft の コード生成を制御する C# コンパイラ オプション を参照してください。
Enable Roslyn Analyzers この設定を無効にすると、プロジェクト内に存在する可能性のある Roslyn アナライザー DLL を使用せずに、ユーザーが作成したスクリプトをコンパイルします。

Optimization

WebGL プラットフォームの Optimization 設定
WebGL プラットフォームの Optimization 設定
プロパティ 説明
Prebake Collision Meshes ビルド時間に メッシュ に衝突データを追加します。
Keep Loaded Shaders Alive シェーダーのアンロードを禁止するかどうかを示します。

詳細については、「シェーダーのロード」(shader-loading) を参照してください。
Preloaded Assets プレイヤーが起動時にロードするアセットの配列を設定します。
新しいアセットを追加するには、Size プロパティの値を大きくしてから、新しく表示された Element ボックス内に、ロードするアセットへの参照を設定してください。
AOT compilation options Ahead of Time (AOT) コンパイルの追加オプション。これは、ビルドした iOS プレイヤーのサイズ最適化 に役立ちます。
Strip Engine Code プロジェクトで使用されていない Unity エンジン機能のコードを Unity Linker ツールで削除する場合は、このオプションを有効にします。この設定は、IL2CPP スクリプティングバックエンド でのみ使用できます。

ほとんどのアプリケーションは、利用可能なすべての DLL を使用するわけではありません。 このオプションは、アプリケーションが使用しない DLL を削除して、ビルドされるプレイヤーのサイズを削除します。アプリケーションが、現在の設定では通常は削除されるクラスを使用している場合、そのアプリケーションをビルドしようとすると、Unity はデバッグメッセージが表示します。
Managed Stripping Level 未使用のマネージ (C#) コードを Unity がどの程度積極的に除去するかを選択します。提供されているオプションは、MinimalLowMediumHigh です。
アプリケーションのビルド時に、Unity リンカーの処理によって、プロジェクトの使用するマネージ DLL から、使用されていないコードを取り除くことができます。コードを取り除くと、実行ファイルのサイズが大幅に小さくなりますが、使用されているコードが誤って削除されることがあります。

これらのオプションと、IL2CPP によるバイトコードストリッピングに関する詳細は、ManagedStrippingLevel を参照してください。
Vertex Compression チャンネルごとの頂点圧縮を設定します。これはプロジェクト内の全てのメッシュに影響します。
通常は、Vertex Compression は、メモリ上のメッシュデータのサイズを縮小して、ファイルサイズを縮小し、GPU パフォーマンスを向上させるために使用されます。

頂点圧縮の設定方法と、この設定の制限に関する詳細は、メッシュデータの圧縮 を参照してください。
Optimize Mesh Data このオプションを有効にすると、ビルドに使用されているメッシュから、使用されていない頂点属性が取り除かれます。このオプションはメッシュ内のデータ量を削減し、ビルドサイズ、ロード時間、およびランタイムメモリ使用量の削減に役立ちます。

注意: この設定を有効にした場合は、マテリアルやシェーダーの設定をランタイムに変更しないようにしてください。

詳細は PlayerSettings.stripUnusedMeshComponents を参照してください。
Texture MipMap Stripping 全てのプラットフォームでミップマップストリッピングを有効にします。これにより、ビルド時に、使用されていないミップマップがテクスチャから取り除かれます。Unity は、ミップマップの値を現在のプラットフォームの Quality Settings と比較することによって、使用されていないミップマップを特定します。ミップマップの値が現在のプラットフォームの全ての Quality Setting から除外されている場合は、Unity は、ビルド時にそれらのミップマップをビルドから削除します。QualitySettings.masterTextureLimit に、取り除かれたミップマップ値が設定されている場合、Unity は、取り除かれていない最も近いミップマップ値をそこに設定します。

Stack Trace

WebGL プラットフォームのロギング設定を選択します。

WebGL プラットフォームの Logging 設定
WebGL プラットフォームの Logging 設定
  • 必要なロギングのタイプに基づいて各ログタイプ (ErrorAssertWarningLogException) に対応するオプションを有効にして、好みのスタックトレース方法を設定します。
    • ScriptOnly: スクリプト実行時にのみログを記録します。
    • Full: 常にログを記録します。
    • None: ログは記録されません。

詳しくは、スタックトレースロギング を参照してください。

Legacy

Clamp BlendShapes (Deprecated) オプションを有効にすると、Skinned Mesh Renderer でブレンドシェイプのウェイトの範囲を固定できます。

WebGL プラットフォームの Legacy 設定
WebGL プラットフォームの Legacy 設定

Publishing settings

Publishing 設定を使用して、Unity が WebGL アプリケーションをビルドする方法を設定します。例えば、ブラウザのキャッシュを有効にして、ビルドにそのファイルを保存するように選択できます。

WebGL プラットフォームの Publishing 設定
WebGL プラットフォームの Publishing 設定
設定 機能
Enable Exceptions ランタイムの予期しないコードの動作 (通常はエラーとみなされる) を処理する方法を選択します。選択肢は NoneExplicitly Throw Exceptions OnlyFull Without StacktraceFull With Stacktrace です。詳細は、WebGL プロジェクトのビルドと実行 を参照してください。
Compression Format リリースビルドファイルに使用する圧縮形式を選択します。選択肢は GzipBrotliDisabled (none) です。このオプションは開発ビルドには影響しないことに注意してください。
Name Files As Hashes これを有効にすると、ビルドの各ファイルのファイル名として非圧縮ファイルコンテンツの MD5 ハッシュを使用できます。
Data caching これを有効にすると、自動的にコンテンツのアセットデータをユーザーマシン上にキャッシュします。そのため、(コンテンツが変更されない限り) その後の実行で再度ダウンロードする必用がありません。
Caching は、ブラウザーによって提供される IndexedDB API を使用して実装されます。ブラウザーによっては、あるサイズを超えるデータをキャッシュする時にユーザーの許可を求める、などの IndexedDB API 関連の制限を実装している場合があります。
Debug Symbols これを有効にすると、エラーが発生したときにデバッグシンボルを保持し、スタックトレースのデマングル (元の関数名を表示) を実行します。リリースビルドでは、すべてのデバッグ情報が別々のファイルに格納され、エラーが発生したときにオンデマンドでサーバーからダウンロードされます。開発ビルドには、メインモジュールに埋め込まれたデマングルサポートが常にあるため、このオプションの影響を受けません。
Show Diagnostics Overlay これを有効にすると、WebGL ビルドで診断情報を表示するオーバーレイが表示されます。開発版とリリース版の両方で使用できます。詳細については、診断オーバーレイプレイヤー設定を表示 を参照してください。
Decompression Fallback ローダーにビルドファイルの解凍フォールバックコードを加えます。選択した圧縮方法に従ってサーバーの応答ヘッダーを設定できない場合は、このオプションを使用します。
Initial Memory Size WASM ヒープメモリの初期サイズをメガバイト (MB) で指定します。デフォルトでは 32 MB に設定されています。Memory Growth ModeNone に設定されている場合、これは WASM ヒープメモリの最大サイズでもあります。
Memory Growth Mode WASM ヒープメモリの成長モードを以下のオプションから選択します。推奨オプションは Geometric です。
None WASM のヒープメモリは、Initial Memory Size で設定された固定サイズです。
Linear WASM のヒープメモリは、Linear Memory Growth Step で設定された固定量を増加します。
Geometric WASM のヒープメモリは、Geometric Memory Growth StepGeometric Memory Growth Cap で設定された係数に応じて、現在のヒープサイズに相対的に増加します。
Maximum Memory Size WAS のヒープメモリの最大サイズを MB 単位で指定します。デフォルトでは 2048 MB に設定されています。このオプションは、Memory Growth ModeLinear、または Geometric の場合のみ有効です。
Linear Memory Growth Step WASM ヒープ拡張ステップを MB 単位で制御するための高度な調整オプションです。デフォルトで 16 MB に設定されています。16 MB の拡張ステップは、ヒープ拡張の必要があるたびに 16 MB ずつ拡張されることを意味します。
Geometric Memory Growth Step 現在のヒープ サイズに応じて WASM ヒープ拡張ファクターを制御するための高度な調整オプションです。デフォルトで、0.2 に設定されています。拡張ファクター 0.2 は、ヒープ拡張の必要があるたびに、ヒープのサイズが 0.2 * currentHeapSize ずつ拡張することを意味します。
Geometric Memory Growth Cap ヒープ拡張ステップの上限を MB 単位で制御する高度な調整オプションです。デフォルトで、96 MB に設定されています。拡張上限 96 MB は、ヒープサイズの拡張が最大で 96 MB であることを意味します。Memory Growth ModeGeometric に設定されている場合にのみ利用可能です。

診断オーバーレイの表示設定

WebGL ビルドの最適化と潜在的な問題の診断のために、この設定を有効にすると診断情報 (現在はメモリ使用量に限定) を表示できます。有効にすると、ビルドにアイコンが表示され、ビルドに関する有用なデータがオーバーレイ表示されます。開発用ビルドとリリース用ビルドの両方で利用できます。

  1. 診断情報を表示するには、Player 設定ウィンドウで Show Diagnostics Overlay オプションを有効にします (File > Build Settings > Player Settings > Publishing Settings)。

    デスクトップでは、WebGL キャンバスのフッターに診断アイコンが表示されます。

    キャンバスのフッターにある診断ボタン
    キャンバスのフッターにある診断ボタン

    モバイルデバイスでは、画面右下に診断アイコンが表示されます。

    診断ボタンを表示するアンドロイド携帯
    診断ボタンを表示するアンドロイド携帯
  2. 診断 アイコン をクリックします。JavaScript のメモリを示すオーバーレイが表示され、さらに WASM のヒープメモリ使用量が表示されます。

診断オーバーレイは、Javascript のメモリ分布と WASM のヒープメモリ使用量を表示します。
診断オーバーレイは、Javascript のメモリ分布と WASM のヒープメモリ使用量を表示します。

以下の診断がオーバーレイ画面に表示されます。

プロパティ 機能
Total JS (JavaScript) Memory JS オブジェクトに割り当てられていない未使用メモリを含む、現在の JS ヒープサイズ。
Used JS Memory JS オブジェクトが使用するメモリ (単位はメガバイト)。
Total WASM heap memory Emscripten でコンパイルされた C/C++ Unity エンジンのヒープ全体を表す MLinear メモリ (未割り当てメモリも含む、単位はメガバイト)。
Used WASM heapy 割り当てられた WASM ヒープ容量。単位はメガバイト。

JS メモリに関する重要点

JS メモリの情報は、performance.memory API を使用して取得されます。この API は現在、Chrome または Edge でのみサポートされています。Safari や Firefox でこの情報を返す API はありません。

ノート: この API は iOS デバイスではサポートされていません。

この API がサポートされていないブラウザーでは、使用不可を示すメッセージが表示されます。

performance.memory API をサポートしないブラウザーでは、使用不可を示すメッセージが表示されます。
performance.memory API をサポートしないブラウザーでは、使用不可を示すメッセージが表示されます。

その他の参考資料


  • WASM メモリオプションは Unity 2022.1 で追加
  • 診断オーバーレイの表示は Unity 2022.2 で追加

PlayerSettingsWebGL

高度な概要
WebGL のテクスチャ圧縮