更改页面时如何清理和卸载 Unity WebGL canvas

How do I clean up and unload a Unity WebGL canvas when changing page

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

事实上,我很确定这个游戏是 运行 因为当我的玩家快要死的时候我会不断听到声音。

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

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

完成

解决方案很简单:在 iframe 中加载 WebGL unity,这会沙箱化应用程序。

使用完 unity 应用程序后,只需删除 iframe 的节点,例如:

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

它和它的所有资源应该立即卸载。

当您处于 iframe 中时,您无法直接与 Unity 播放器通信,但您仍然可以使用 postMessage.

来回传递消息

Unity 2019.1 提供了退出 webgl 和释放内存的正确方法(虽然它在我的测试中失败了,也许我错了,请告诉我它是否有效):

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

你可以像这样使用JS版本

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

更多请查看Quit and memory cleanup