unity3d 如何卸载unity WebGL

bvjxkvbb  于 2023-02-13  发布在  其他
关注(0)|答案(2)|浏览(615)

我正在使用Unity webGL构建,这是在JavaScript中初始化/加载Unity webgl的方法。

var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebGLDemo.json", {onProgress: UnityProgress});

但没有办法卸载webgl。我可以删除canvas标记,但问题是一些资源仍保留在内存中,而不是垃圾收集。此外,当我尝试删除

function DeleteGame(){
            console.log("remove game");
            document.getElementById("gameContainer").remove();
            //gameInstance = null;
      }

那么我们将得到另一个错误
屏幕位置超出视锥(屏幕位置0.000000、0.000000、0.000000)(摄像机矩形0 0 0 0)
有没有合适的方法可以卸载webgl?

2ledvvac

2ledvvac1#

在Unity 2019测试版中,Unity提供了一个内置的方法(C#/JavaScript)来卸载Unity WebGL and cleanup memory

  • C#:调用Application.Quit()函数
  • 调用unityInstance.退出(回调)

您可以使用C#版本或Javascript:

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

有关详细信息,请查看unity Forumsunity bu g。

  • 我在Unity 2019.1.0测试版中使用过此函数,但我不确定它是否会清除内存,但它肯定会关闭Unit WebGL应用程序。*
7z5jn7bk

7z5jn7bk2#

请注意,从Unity v2020.1开始,unityInstance.Quit()不再接受回调函数,而是一个Promise函数,因此您必须这样调用它:

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

相关问题