WebGL - 圧縮ビルドの展開
WebGL グラフィックス

WebGL ビルドのデバッグとトラブルシューティング

現在、Unity WebGL コンテンツを MonoDevelop や Visual Studio でデバッグすることができません。このため、コンテンツ内で何が悪いのかを正確に把握するのが難しくなっています。ここでは、ビルドから情報を得る方法のヒントをいくつか紹介します。

ブラウザの JavaScript コンソール

Unity WebGL はファイルシステムにアクセスできません。そのため、他のプラットフォームのようにログファイルを出力しません。ただし、通常、ログファイルに出力するすべてのログ情報 (Debug.LogConsole.WriteLine、Unity の内部ログなど) をブラウザの JavaScript コンソールに出力します。

  • Firefox では、Ctrl-Shift-K (Windows) か Command-Option-K (Mac) を押して、 JavaScript コンソールを開きます。
  • Chrome では、Ctrl-Shift-J (Windows) か Command-Option-J (Mac) を押して、JavaScript コンソールを開きます。
  • Safari では、環境設定の詳細タブで開発メニューを有効にし、Command-Option-C を押して、JavaScript コンソールを開きます。
  • Microsoft Edge と Internet Explorer では、F12 を押して JavaScript コンソールを開きます。

開発ビルド

デバッグの目的で、Unity で開発用ビルドの作成 (Build Settings ウィンドウDevelopment Build チェックボックス) が必要な場合があります。開発用ビルドを使用すると、プロファイラーに接続が可能で、ミニフィケーションが行われないため、出力された JavaScript コードには、(マングリング状態の C++ を通して) まだ人が理解できる関数名が含まれています。ブラウザエラーが発生したとき、例外を投げたのに例外サポートが不能のとき、Debug.LogError を使用するとき、これをブラウザに使用して、スタックトレースを表示することができます。

例外サポート

WebGL には異なるレベルの例外サポートがあります(Building for WebGL のページを参照)。デフォルトでは、Unity WebGL は明示的に投げられた例外のみをサポートします。管理コード内で、_フル_例外サポートを有効にして IL2CPP が生成するコード内で追加チェックを出力し、ゼロ参照や数列の範囲外要素へのアクセスをキャッチします。この追加チェックは、パフォーマンスに大きな影響を与え、コードのサイズと負荷時間を増加します。そのため、このモードはデバッグにのみ推奨されます。

_フル_例外サポートは関数名も出力し、管理コードのスタックトレースを生成します。そのため、コンソールにキャッチできなかった例外と Debug.Log 文書のスタックトレースが表示され、System.Environment.Stacktrace でスタックトレース文字列を抽出できます。

WebGL - 圧縮ビルドの展開
WebGL グラフィックス