在Chrome上运行Webgl时遇到了一些问题:
关闭我的WebGL游戏后,我怎么能新鲜堆?
有什么建议可以解决这个问题吗?
这可能不是Unity的错。通常,当Chrome中的标签关闭时,内存需要一段时间才能释放。有时4
到10
分钟。这是我从Task Manger
注意到的。它不会立即释放内存。有时,您甚至必须关闭当前的Chrome浏览器才能释放关闭的标签内存。我不知道这是一个错误或功能。也许,打电话给GC.Collect()
可能有所帮助。
您应该将下面的代码放在脚本中,看看是否有帮助。
void OnDisable()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
According to Unity Forums在Unity 2019.1中,有适当的方法来退出和清理WebGL播放器:
您可以像这样使用JS异步函数:
unityInstance.Quit(function() {
console.log("done!");
});
unityInstance = null;
如果您正在使用C#的Application.Quit,那么您可以在JS中提供它的回调,如下所示:
UnityLoader.instantiate("unityContainer", "%UNITY_WEBGL_BUILD_URL%", {onProgress: UnityProgress,
Module:{
onQuit : function(){
console.log("unity has quit");
}
}
});
我的观察/警告:根据我目前的观察,它并没有释放记忆,第二是目前统一2019处于测试阶段。如果有人使用此退出功能,请告诉我它是否正常工作。