11

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

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

在启用 asm.js 的 Edge 12 或 13 中,它加载速度很快,但在 Unity 应用程序启动时会立即使选项卡崩溃。我已经能够弄清楚“preRun”回调被调用,但“postRun”回调没有。

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

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

4

2 回答 2

3

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

于 2016-01-27T23:43:51.110 回答
-1

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

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

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

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

查看他们的文档并使用最适合您的。他们说它是您可以使用的 5 合 1 包装。

当错误发生时,您可以使用简单的代码处理错误:

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);

希望能帮助到你。快乐编码!:)

于 2016-01-20T17:42:44.863 回答