我也在这里提出这个问题,以便我终于可以解决这个问题。 Original post also here
所以我的问题是我试图将Unity游戏集成到我们自己的系统中。游戏需要将参数作为"设置"来自我们的系统并在游戏中使用它们。当游戏完成后,它会将回调功能发送回我们的系统。当我部署和使用在构建到WebGL平台游戏期间创建的索引文件时,这一切都在游戏中完美运行。但是当我尝试在我们的系统中集成和运行游戏时,我设法遇到了上述错误。
我尝试的第一个解决方案是使用从init.js文件中使用JQuery创建它。在iframe中,我只打开Unity build生成的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之后应该已经加载了所有必要的东西来运行)。 我在哪里出错,当比赛引发我的时候&#34;&#34;&#34; RangeError:超出最大调用堆栈大小&#34;使用Chrome和Firefox的“太多递归”错误。可能是在init.js中运行的脚本的顺序,它混合了整个加载还是什么?
我还将调试放到UnityConfig.js和fileloader.js文件中,以确保错误来自何处。实际上,当系统通过文件加载器运行时,我注意到当我在系统中运行代码或通过iframe或直接从index.html执行命令时,执行顺序之间会有一些变化。这可能是问题的根源,如果是,我该怎么做才能解决这个问题。
我知道iframe是可行的解决方案,但不,我不想使用它。