调试和故障排除WebGL构建

Unity WebGL内容目前无法在Visual Studio中进行调试,这可能会导致难以找出您的内容出了什么问题。以下是关于如何从构建中获取信息的一些提示。

The browser’s JavaScript console 浏览器的JavaScript控制台

Unity WebGL无法访问您的文件系统,因此它不会像其他平台一样写入日志文件。但是,它会将通常会记录到日志文件(例如Debug.Log,Console.WriteLine或Unity的内部日志记录)的所有日志信息写入浏览器的JavaScript控制台。

  • 在Firefox中,您可以通过在Windows上按Ctrl-Shift-K或在Mac上按Command-Option-K来打开JavaScript控制台
  • 在Chrome中,您可以通过在Windows上按Ctrl-Shift-J或在Mac上按Command-Option-J来打开JavaScript控制台。
  • 在Safari中,您可以打开JavaScript控制台,方法是启用“首选项”中“高级”选项卡中的“显影”菜单,然后按下Command-Option-C。
  • 在Microsoft Edge或Internet Explorer中,可以通过按F12打开JavaScript控制台。

HybridCLR 无法触发unity onmousedrag_托管代码

 

Development builds 开发构建

出于调试的目的,您通常可能希望在Unity中进行开发构建(“构建设置”窗口中的“开发构建”复选框)。开发构建允许你连接探查器,并且它们不会被缩小,所以发射的JavaScript代码仍然会包含可读的(尽管是)函数名称。当您遇到浏览器错误,或者抛出异常和异常支持被禁用或使用Debug.LogError时,这些可以被浏览器用来显示堆栈跟踪。与启用完全异常支持(请参见下文)时可以获得的管理堆栈跟踪不同,这些堆栈跟踪的名称将会变形,并且不仅包含托管代码,还包含内部UnityEngine代码。

Exception support 例外支持

WebGL具有不同级别的异常支持(请参阅 Building for WebGL)。默认情况下,Unity WebGL将仅支持显式抛出的异常。您可以启用完全异常支持,然后在IL2CPP生成的代码中发出额外的检查,以捕获托管代码中的空引用和超出范围的数组元素。这些额外的检查将显着影响性能,并增加代码大小和加载时间,因此建议仅在调试时使用此模式。

完全异常支持还会发出函数名称来为托管代码生成堆栈跟踪。因此,您将在控制台中看到未捕获的异常和Debug.Log语句的堆栈跟踪,并且可以使用System.Environment.Stacktrace获取堆栈跟踪字符串。

 

HybridCLR 无法触发unity onmousedrag_WebGL_02