1

我对统一有点陌生,这是我第一次在这里创建一个线程,所以也许我在问一个愚蠢的问题。

我正在使用 react 创建一个网站,并且该网站的一部分有一个使用统一的游戏。我遇到的问题是我正在为这个web应用程序使用react,当通过react重新加载unity时会导致错误。

通常 unity 只被 unityloader.js 文件加载一次。但是,每次加载某个反应组件时,我都设置反应应用程序的方式,这段代码会导致统一加载

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

我第一次执行此加载时一切正常,但是当我重新访问包含此 unitywebgl 组件的页面时,unity 崩溃并且我收到以下错误。

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)

也许我做错了什么,我正在使用一些奇怪的方式来初始化统一。然而,对于这个 web 应用程序来说,经常初始化和重新加载统一是很重要的。unityloader.js 中是否有一些功能可以给它一个画布并手动要求它重新加载,或者我是否朝着错误的方向前进?

4

1 回答 1

2

我制作了一个NPM 模块,用于在您的 ReactJS 应用程序中添加 Unity 内容。一个基本的实现可能看起来像这样;

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' />
    }
}
于 2017-11-23T12:46:58.627 回答