Version: 2021.1
言語: 日本語
WebGL での開発を始めるにあたって
WebGL プロジェクトのビルドと実行

WebGL の Player 設定

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

WebGL Player 設定
WebGL Player 設定

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

ノート: Icon セクションが WebGL プラットフォームの Player 設定に表示されますが、そのセクションには設定がありません。また、Splash Image セクションの唯一の設定は 共通のスプラッシュスクリーン の設定だけです。

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 コンテンツを実行するのに必要な定型コードのみが含まれます。

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

Other Settings

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 設定の Scriptable Render Pipeline Asset で何も設定されていない場合にのみ表示されます。
Graphics Jobs これを有効にすると、Unity がグラフィックスタスク (レンダリングのループ) を他の CPU コア上で動作するワーカースレッドにオフロードします。これは、ボトルネックとなるメインスレッドの Camera.Render で費やされる時間を短縮することを目的としています。
ノート: 現在、Unity は、Vulkan を使用している時のみ Graphics Jobs をサポートします。そのため、この設定は、OpenGL ES を使用しているときには効力がありません。
Lightmap Streaming Enabled これを有効にすると、現在のゲームカメラをレンダリングするために、必要に応じてライトマップのミップマップのみを読み込みます。この値は、生成されるライトマップテクスチャに適用されます。
ノート この設定を使用するには、Texture Streaming Quality 設定を有効にする必要があります。
Streaming Priority ライトマップのミップマップストリーミングの優先順位を設定して、リソースの競合を解決します。これらの値は、ライトマップテクスチャが生成されると適用されます。
正の数値が優先されます。有効な値の範囲は –128 から 127 です。

Configuration

WebGL プラットフォームの Configuration 設定
WebGL プラットフォームの Configuration 設定
設定 機能
Scripting Backend WebGL は常に IL2CPP スクリプティングバックエンドを使用するため、このオプションは WebGL では使用できません。
API Compatibility Level プロジェクトに使用する .NET API を選択します。この設定は、サードパーティ製ライブラリとの互換性に影響を与えます。
ヒント サードパーティ製アセンブリに問題がある場合は、後述の API Compatibility Level セクションを参照してください。
.Net 2.0 最大の .Net 互換性、最大ファイルサイズ。非推奨の .NET 3.5 ランタイムの一部。
.Net 2.0 Subset 完全な .Net 互換性のサブセット。ファイルサイズは小さくなります。非推奨の .NET 3.5 ランタイムの一部。
.Net Standard 2.0 .NET Standard 2.0 と互換性があります。ビルドは小さく、完全なクロスプラットフォームをサポートします。
.Net 4.x .NET Standard 2.0 に含まれていない API にアクセスするライブラリを使用する場合は、このオプションを選択します。.NET Framework 4 (.NET Standard 2.0 プロファイルのすべてと追加 API を含む) と互換性があります。
サイズが大きめのビルドを作成します。使用可能な追加の API がすべてのプラットフォームで必ずしもサポートされているわけではありません。詳細については、追加のクラスライブラリアセンブリの参照 を参照してください。
Use incremental GC サポートされていません。
Active Input Handling ユーザーからの入力をどのように処理するかを選択します。
Input Manager 従来の Input 設定を使用します。
Input System (Preview) 新しい Input (入力) システムを使用します。入力システムはこのリリースのプレビューパッケージとして提供されています。Input System のプレビュー版を使用するには、InputSystem パッケージ をインストールしてください。
Both 両方のシステムを同時に使用できます。

API Compatibility Level

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

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

Script Compilation

WebGL プラットフォーム用のスクリプトのコンパイル設定
WebGL プラットフォーム用のスクリプトのコンパイル設定
Setting Function
Scripting Define Symbols Set custom compilation flags. For more details, see the documentation on Platform dependent compilation.
Additional Compiler Arguments Add entries to this list to pass additional arguments to the Roslyn compiler. Use one new entry for each additional argument.
To create a new entry, press the ‘+’ button. To remove an entry, press the ‘-’ button.
When you have added all desired arguments, click the Apply button to include your additional arguments in future compilations.The Revert button resets this list to the most recent applied state.
Suppress Common Warnings Disable this setting to display the C# warnings CS0169 and CS0649.
Allow ‘unsafe’ Code Enable support for compiling ‘unsafe’ C# code in a pre-defined assembly (for example, Assembly-CSharp.dll).
For Assembly Definition Files (.asmdef), click on one of your .asmdef files and enable the option in the Inspector window that appears.
Use Deterministic Compilation Disable this setting to prevent compilation with the -deterministic C# flag. With this setting enabled, compiled assemblies are byte-for-byte identical each time they are compiled.
For more information, see Microsoft’s deterministic compiler option documentation.
Enable Roslyn Analyzers Disable this setting to compile user-written scripts without Roslyn analyzer DLLs that might be present in your project.
Use Roslyn Reference Assemblies Disable this setting to the compiler not to skip compilation reference assemblies when the metadata of the assembly does not change.

Optimization

WebGL プラットフォームの Optimization 設定
WebGL プラットフォームの Optimization 設定
設定 機能
Prebake Collision Meshes ビルド時に衝突データをメッシュに加えるには、このオプションを有効にします。
Keep Loaded Shaders Alive シェーダーがアンロードされないようにするには、このオプションを有効にします。
Preloaded Assets 起動時にプレイヤーが読み込むためのアセットの配列を設定します。
新しいアセットを加えるには、Size プロパティの値を増やし、表示される新しい Element ボックスに読み込むようにアセットへの参照を設定します。
Strip Engine Code コードのストリッピングを有効にします。この設定は IL2CPP Scripting Backend でのみ可能です。
たいていのゲームはすべての必要な dll を使用しているわけではありません。 Strip Engine Code を有効にすると、使用しない部分を取り除き、 iOS デバイスでビルドされたプレイヤーのサイズを削減します。現在選択しているオプションによって通常は削除されるはずのクラスをゲームで使用している場合は、ビルドするときにデバッグメッセージが表示されます。
Managed Stripping Level Unity が 未使用のマネージ (C#) コードをどれだけ積極的に削除するかを設定します。
Unity がゲームやアプリケーションをビルドするとき、Unity Linker プロセスは、プロジェクトで使用されている動的にリンクされたマネージライブラリから未使用のコードをストリップします。コードを削除すると、結果として得られる実行ファイルはかなり小さくなりますが、誤って実際に使用されているコードを削除することがあります。この設定では、未使用のコードをどれだけ積極的に削除するかを選択できます。
Normal ビルドサイズと .NET/IL2CPP のビルド時間を減らすために、アクセス不能なマネージコードを削除します。
Aggressive Normal オプションよりも積極的にコードを削除します。コードサイズはさらに削減されますが、この追加の削減は副作用を伴う可能性があります。例えば、いくつかのメソッドはデバッガーでは表示されなくなり、リフレクションによってアクセスされるコードは削除されます。特定のクラスとメソッドを保持するためにカスタムの link.xml ファイルを作成することができます。詳細は IL2CPP を使ったマネージバイトコードストリップ を参照してください。
Vertex Compression 圧縮する頂点チャンネルを設定します。例えば、位置とライトマップ UV 以外のすべてに対して圧縮を有効にすることができます。
圧縮すると、メモリと帯域幅を節約できますが、精度が低下します。インポートした各オブジェクトに設定されたメッシュ全体の圧縮は、オブジェクトに設定した頂点圧縮をオーバーライドします。
Optimize Mesh Data これを有効にすると、メッシュに適用されるマテリアルに必要のないすべてのデータはメッシュから削除されます。

Logging

特定のコンテキストで許可するログのタイプを選択します。

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

各ログタイプ (ErrorAssertWarningLogException) に対して、以下のオプションから 1 つ選択します。スクリプト実行中にログを行う (ScriptOnly)、常に行なう (Full)、決して行なわない (None)。

Legacy

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

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

Publishing settings

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 これを有効にすると、エラーが発生したときにデバッグシンボルを保持し、スタックトレースのデマングル (元の関数名を表示) を実行します。リリースビルドでは、すべてのデバッグ情報が別々のファイルに格納され、エラーが発生したときにオンデマンドでサーバーからダウンロードされます。開発ビルドには、メインモジュールに埋め込まれたデマングルサポートが常にあるため、このオプションの影響を受けません。
WebAssembly Streaming サポートするブラウザーで、ストリーム化された基礎的なソースから直接 WebAssembly モジュールをコンパイルし、インスタンス化することができます。

  • 2019–06–10 修正されたページ

  • Publishing settings は Unity 2017.3 で更新NewIn20173

  • ‘unsafe’ コードのチェックボックスは Unity 2018.1 で追加

  • .NET 4.x ランタイムは 2018.1 で追加

  • .Net 3.5 スクリプティングランタイムは、2018.3 では非推奨です。 NewIn20183

  • WebAssembly ストリーミング設定は 2019.1 で追加NewIn20191

  • Input System プレビューは Unity 2019.1 で追加

  • asm.js のリンカーターゲットを Unity 2019.1で 削除

WebGL での開発を始めるにあたって
WebGL プロジェクトのビルドと実行