Visual Studio doesn’t support debugging Unity WebGL content. Use the following tips to get your build information.
Unity WebGL doesn’t have access to your file system, so it doesn’t write a log file like other platforms. However, it does write all logging information such as Debug.Log
, Console.WriteLine
or Unity’s internal logging to the browser’s JavaScript console.
JavaScript コンソールを開くには、以下の手順を行います。
For debugging purposes, you might want to make a development build in Unity (open the Build Settings window and enabled the Development Build checkbox). Development builds allow you to connect the profiler, and Unity doesn’t minify them, so the emitted JavaScript code still contains human-readable (though C++-mangled) function names.
The browser uses these to display stack traces if you run into a browser error, when using Debug.LogError, or when an exception occurs and exception support is disabled
. Unlike the managed stack traces that can occur when you have full exception support (see below), these stack traces have mangled names, and contain not only managed code, but also the internal UnityEngine code.
WebGL にはさまざまなレベルの例外のサポートがあります (WebGL プロジェクトのビルドと実行 を参照)。デフォルトでは、Unity WebGL は明示的にスローされた例外のみをサポートします。Full の例外サポートを有効にすると、IL2CPP によって生成されたコードで追加のチェックを行い、マネージコードの null 参照と範囲外の配列要素へのアクセスをキャッチできます。これらの追加のチェックは、パフォーマンスに著しく影響し、コードサイズや読み込み時間を増加させるので、デバッグにのみ使用してください。
Full の例外サポートは、マネージコードのスタックトレースを生成するための関数名も出力します。このため、スタックトレースは、キャッチできない例外と Debug.Log
ステートメントのためのコンソールに表示されます。スタックトレース文字列を取得するには System.Environment.Stacktrace
を使用します。
これは一般的な問題で、特に 32 ビットブラウザーで発生します。WebGL のメモリ問題とその修正方法の詳細は、WebGL のメモリ を参照してください。
Unity WebGL は、セッション間で永続化させる必要のあるすべてのファイル (PlayerPrefs や persistentDataPath に保存されるファイルなど) をブラウザー IndexedDB に保存します。これは非同期 API なので、いつ終了するか分かりません。
以下のコードを呼び出して、メモリから IndexedDB ファイルシステムへの、持続中のファイルシステムの書き込み操作をすべてフラッシュするようにします。
FS.syncfs(false, function (err) {
if (err) {
console.log("Error: syncfs failed!");
}
});
The browser console log usually prints this error due to incorrect server configuration. For more information on how to deploy a release build, see documentation on Deploying compressed builds.
The browser console log prints this error when the content tries to load an AssetBundle compressed using LZMA, which Unity WebGL doesn’t support. Re-compress the AssetBundle using LZ4 compression to solve this problem. For more information on compression for WebGL, see documentation on WebGL building, particularly the AssetBundles section.