Подтвердить что ты не робот

Unity/WebGL и связанный с asm.js сбой в MS Edge

У меня есть очень базовое приложение Unity, которое по существу является тестовым жгутом проприетарной структуры. Он отлично работает в Chrome, Firefox и Safari. Edge - это другая история.

В Edge 12 с отключенным asm.js требуется очень много времени для загрузки - примерно 90 секунд, по сравнению с 15-20 в других браузерах.

В Edge 12 или 13 с включенным asm.js он быстро загружается, но сразу же отключает вкладку, когда запускается приложение Unity. Мне удалось выяснить, что вызван обратный вызов "preRun", но обратный вызов "postRun" не работает.

Я не могу понять, как начать отладку - Edge отключает asm.js, если отладчик Dev Tools открыт, а отключение отладчика также отключает консоль JS. Я не могу подключить отладчик Unity, потому что сбой, похоже, произойдет до того, как я доберусь до этой точки.

Есть ли какой-то журнал из Edge, где я мог бы найти что-нибудь о сбое, возможно, даже трассировку стека JS?

4b9b3361

Ответ 1

Это связано с ошибкой в ​​Edge в нашем метаданных asm.js(который я являюсь владельцем). Спасибо, что сообщили о проблеме, я попытаюсь получить исправление, чтобы исправить это в ближайшее время! Если кто-то еще попал в аварию в asm.js, не стесняйтесь присылать мне сообщение, и я с радостью буду работать с вами, чтобы получить исправление (и найти обходной путь тем временем).

Ответ 2

Я хотел бы конкретно ответить на ваш вопрос: "Есть ли какой-то журнал из 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);

Надеюсь, это поможет. Счастливое кодирование!:)