1

我也在这里问这个问题,以便我最终可以解决这个问题。原帖也在这里

所以我的问题是我正在尝试将 Unity 游戏集成到我们自己的系统中。游戏需要从我们的系统中获取参数作为“设置”并在游戏中使用它们。游戏完成后,它会执行回调函数将内容发送回我们的系统。当我部署和使用构建到 WebGL 平台游戏期间创建的索引文件时,这一切都在游戏中完美运行。但是,当我尝试在我们的系统中集成和运行游戏时,我设法遇到了上述错误。

我尝试的第一个解决方案是通过使用 JQuery 从 init.js 文件创建它来使用它。在 iframe 中,我只需打开 Unity 构建生成的 index.html 文件,它就会在 iframe 中显示游戏而没有问题。(在这一点上,我没有更改 Unity 提供的文件中的任何内容)所以这个解决方案效果很好。

$(this.getElement()).append('<iframe src="xxxx/xxxx/xxxx/index.html" height="768" width="1024" frameborder="0"></iframe>');

通过 iframe 发送参数是您最不想做的事情,因为唯一的方法是通过 url。所以我想找到解决这个问题的方法,并发现这样做是可能的(甚至是可取的)。一种解决方案是从 index.html 文件中获取所有代码并将其放入我第一次拥有 iframe 的 init.js 文件中。

因此,当我们的系统运行 init.js 文件时,它会创建画布(index.html 已经拥有),然后像 index.html 一样以相同的顺序创建其他脚本。我用 console.log() 调试了整个代码,它正常地通过了代码。错误发生在系统运行完 init.js 并且 Unity 应该开始工作之后(基本上在 unity 应该已经加载了所有必要的东西来运行之后)。我哪里出错了,当游戏向我抛出“RangeError: Maximum call stack size exceeded” with chrome 和“Too much recursion” Firefox 错误时。可能是脚本在 init.js 中运行的顺序混合整个装载还是什么?

我还对 UnityConfig.js 和 fileloader.js 文件进行了调试,以确保错误来自何处。实际上,当系统通过文件加载器运行时,我注意到当我在系统内或通过 iframe 或直接从 index.html 运行代码时,执行顺序之间存在一些变化。这也可能是问题的根源吗?如果是,我应该怎么做才能解决这个问题。

我知道 iframe 是可行的解决方案,但是不,我不想使用它。

4

0 回答 0