Reactjs в сочетании с Unity Webgl вызывает ошибки

Я немного новичок в единстве, и я впервые создаю тему здесь, так что, возможно, я задаю глупый вопрос.

Я создаю веб-сайт, используя реакцию, и на части этого веб-сайта есть игра, в которой используется единство. Проблема, с которой я столкнулся, заключается в том, что я использую реакцию для этого веб-приложения, которое вызывает ошибки, когда единство перезагружается с помощью реакции.

обычно unity загружается только один раз файлом unityloader.js. Однако то, как я настраиваю свое приложение для реагирования каждый раз, когда загружается определенный реагирующий компонент, этот фрагмент кода вызывает загрузку единства

componentWillMount() {
        const script = document.createElement("script");
        script.src = "Release/UnityLoader.js";
        script.async = true;
        document.body.appendChild(script);
    }

В первый раз, когда я выполняю эту загрузку, все работает нормально, но когда я повторно посещаю страницу, содержащую этот компонент unitywebgl, единство дает сбой, и я получаю следующую ошибку.

Uncaught TypeError: Cannot read property 'apply' of undefined
    at Object.dynCall (blob:http://localhost:8000/11f3d503-5e8a-473e-851f-2373f9cb5de6:1)
    at Object.handlerFunc (blob:http://localhost:8000/11f3d503-5e8a-473e-851f-2373f9cb5de6:1)
    at jsEventHandler (blob:http://localhost:8000/11f3d503-5e8a-473e-851f-2373f9cb5de6:1)

Может я что-то делаю не так и использую какой-то странный способ инициализировать единство. Однако для этого веб-приложения важно часто инициализировать и перезагружать единство. Может быть, есть какая-то функция в unityloader.js, чтобы дать ему холст и вручную попросить его перезагрузить, или я иду в неправильном направлении?


person paul37    schedule 09.01.2017    source источник


Ответы (1)


Я сделал модуль NPM для добавления содержимого Unity в ваше приложение ReactJS. Базовая реализация может выглядеть примерно так:

import React from 'react';
import Unity from 'react-unity-webgl';

export class App extends React.Component {
    render () {
        return <Unity 
            src='Build/myGame.json' 
            loader='Build/UnityLoader.js' />
    }
}
person Jeffrey Lanters    schedule 23.11.2017