如何在更改页面时清理和卸载Unity WebGL画布

时间:2016-04-20 09:10:58

标签: javascript unity3d unity-webgl

我在下载并运行Unity WebGL游戏后更改当前页面时,我的网络应用程序出现问题。

事实上,我确信游戏正在运行,因为当我的玩家死亡时我会不断听到声音。

有没有办法在更改网页时删除所有上下文?这可能是一种内存泄漏吗?

编辑1:我的Web应用程序使用AngularJS / Material

完成

2 个答案:

答案 0 :(得分:3)

解决方案很简单:在iframe中加载WebGL统一,这会使应用程序成为沙箱。

当您完成统一应用时,只需删除iframe的节点,如:

var iframe=...;
iframe.parentNode.removeChild(iframe);

它及其所有资源应该立即卸载。

当您在iframe中时,您无法直接与Unity播放器进行通信,但您仍然可以使用postMessage向其传递消息。

答案 1 :(得分:1)

Unity 2019.1提供了退出webgl并释放内存的正确方法(尽管它在我的测试中失败了,也许我错了,请让我知道它确实有效或无效):

  • C#:调用Application.Quit()
  • JS:调用unityInstance.Quit(callback)

您可以使用这样的JS版本

unityInstance.Quit(function() {
    console.log("done!");
});

有关更多信息,请检查Quit and memory cleanup