Reactjs结合unity webgl导致错误

标签 reactjs unity-game-engine unity-webgl

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

我正在使用 React 创建一个网站,该网站的一部分有一个使用 Unity 的游戏。 我遇到的问题是我正在为这个网络应用程序使用React,当React重新加载Unity时,这会导致错误。

通常 Unity 仅由 unityloader.js 文件加载一次。然而,每次加载某个 react 组件时,我的 react 应用程序设置方式都会导致加载统一性

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 应用程序来说,经常初始化和重新加载 Unity 非常重要。 unityloader.js 中是否有一些函数可以为其提供 Canvas 并手动要求其重新加载,或者我是否走错了方向?

最佳答案

我做了一个NPM module用于在 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' />
    }
}

关于Reactjs结合unity webgl导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41548147/

相关文章:

node.js - 使用 NPM 测试跳过用户输入

camera - Unity3D 正确的相机正交尺寸

c# - 从位置找到游戏对象上最近/最近的点?

javascript - Unity WebGL SendMessage 到 Unity 函数错误对象 InGameCanvas/CoilValue 未找到

reactjs - 打包应用程序时,带有Reactjs execFile的Electron错误

javascript - 在 React 中动态更改列表项

javascript - 在 react-infinite-scroll-component 中的每个新搜索中替换获取的搜索结果

c# - Unity Alpha 漫反射 mask 着色器

unity-game-engine - 如何为 SteamVR 添加 3D 叠加

c# - 从 sendMessage 返回值或在 unity webgl 中交替