我在下载并运行Unity WebGL
游戏后更改当前页面时,我的Web应用程序出现问题。
事实上,我确信游戏正在运行,因为当我的玩家死亡时我会不断听到声音。
有没有办法在更改网页时删除所有上下文?这可能是一种内存泄漏吗?
编辑1:我的Web应用程序使用AngularJS / Material完成
解决方案很简单:在iframe
中加载WebGL统一,这就是应用程序的沙箱。
完成统一应用程序后,只需删除iframe
的节点,如:
var iframe=...;
iframe.parentNode.removeChild(iframe);
并且它和它的所有资源应该立即卸载。
当您在iframe中时,您无法直接与Unity播放器通信,但您仍然可以使用postMessage
向其传递消息。
Unity 2019.1提供了退出webgl和释放内存的正确方法(虽然我的测试失败了,也许我错了,请让我知道它真的有效):
您可以使用这样的JS版本
unityInstance.Quit(function() {
console.log("done!");
});
有关更多信息,请查看Quit and memory cleanup