如果多次加载场景,Unity WebGL的内存不足崩溃

时间:2019-06-03 04:21:28

标签: c# unity3d

游戏开始时,它会加载一个基础场景,然后在该基础场景之上加载其他辅助场景。

要将次要场景加载到基本场景的顶部,这是将场景加性加载的代码

代码(CSharp):

            using (downloadWWW = new WWW(url)) {
            yield return downloadWWW;

                if (downloadWWW.assetBundle != null) {
                    GlobalData.assetBundle = downloadWWW.assetBundle;
                    GlobalData.loadedBundleScene = "sceneName";
                    SceneManager.LoadScene("sceneName", LoadSceneMode.Additive);
               }

然后,当我想加载另一个场景时,我会像这样删除次要场景

代码(CSharp):

SceneManager.UnloadScene("sceneName"); // same result using UnloadSceneAsync
GlobalData.assetBundle.Unload(true);
Resources.UnloadUnusedAssets();

(我真的使用UnloadSceneAsync,我只是显示UnloadScene以使其在此处易于阅读)

这应该已经卸载了次要场景,然后我再次调用顶部代码以将另一个场景加载到基本场景之上。

如果重复此循环3到4次,则浏览器将因内存不足而崩溃。

在编辑器中没有崩溃,探查器在浏览器中执行相同操作时会显示同一场景(编辑器)的多个场景负载上的内存常数。

编辑:Unity探查器显示,即使在编辑器中运行的空场景中,MONO内存也在不断增加。

有人可以帮忙吗?

0 个答案:

没有答案