Unity/WebGL和asm.js在MS Edge中相关崩溃



我有一个非常基本的Unity应用程序,它本质上是一个专有框架的测试工具。它在Chrome、Firefox和Safari中运行良好。Edge是另一回事。

在Edge 12中,在禁用asm.js的情况下,加载需要很长的时间——大约90秒,而在其他浏览器中为15-20秒。

在启用asm.js的Edge 12或13中,它加载速度很快,但在Unity应用程序启动时会立即崩溃选项卡。我已经知道"preRun"回调被调用了,但"postRun"回调没有。

我不知道如何开始调试这个-如果开发工具调试器打开,Edge会禁用asm.js,而分离调试器也会禁用js控制台。我无法连接Unity调试器,因为崩溃似乎发生在我到达该点之前。

是否有来自Edge的某种日志,我可以在其中找到有关崩溃的任何信息,甚至可能是JS堆栈跟踪?

这是由于我们的asm.js专业化代码(我是它的所有者)中的Edge中的一个错误。感谢您报告这个问题,我会尽快找到一个补丁来解决这个问题!如果有其他人在asm.js中遇到崩溃,请随时给我发消息,我很乐意与您合作解决问题(同时找到解决方法)。

我想特别回答您的问题-"是否有来自Edge的某种日志,我可以在其中找到有关崩溃的任何信息,甚至可能是JS堆栈跟踪?"

我真的建议你使用stacktracke.js-这是他们的Github repo。

只要你编写Javascript代码,跨浏览器调试,查找任何错误或异常,这就是迄今为止最好的方法。它非常一致,支持大多数浏览器,甚至Edge。

需要注意的一件事是-您需要了解一些Javascript Promises,它是ES6的一部分(同样,大多数最新的浏览器已经支持了)。

查看他们的文档,并使用完全适合您的内容。他们说这是一个五合一的包装,你可以使用。

当错误发生时,你可以用-这样简单的代码来处理它

window.onerror = function(msg, file, line, col, error) {
    // callback is called with an Array[StackFrame]
    StackTrace.fromError(error).then(callback).catch(errback);
};

并从错误中获取Stacktrace-

var error = new Error('BOOM!');
StackTrace.fromError(error).then(callback).catch(errback)
=> Promise(Array[StackFrame], Error);

希望能有所帮助。编码快乐!:)

最新更新