关于Unity异步加载场景WebGl端需注意的

win10
unity2018.2.6web

加载场景如今习惯用异步加载浏览器

AsyncOperation ao = SceneManager.LoadSceneAsync(string SceneName);

写在协程里,而从ao中能够得到加载进度异步

float progress = ao.progress;

这样能够控制加载进度条,或者文字显示百分比ide

按照网上不少事例的一样用法,通常是先把自动加载场景关掉动画

ao.allowSceneActivation = false;

也就是说,加载完成,也不跳转场景,须要手动控制
固然这里有个小抗就是这个false要在加载进度在90%如下
若是到了90%之后,再设置为true,也不会跳转webgl

我原先的作法就是在协程里设while循环,里面判断是否到了90%,到了则跳出循环并设置为true,而后就自动加载了。code

while(ao.progress<0.9f)
{
  //……
}
ao.allowSceneActivation = true;

从表现上来看,没有任何问题协程

可是这里有个小坑,尤为是webgl端要注意的是若是一开始设置内存

ao.allowSceneActivation = false;

则加载新场景会大量的占用内存,对于webgl端所运行的浏览器来讲,若是场景大,那根本是直接奔溃。string

因此,正确作法就是一开始就设置为true

ao.allowSceneActivation = true;

反正是异步的,加载动画什么的也不会卡,关键是不会莫名其妙的占用大量内存,固然这么说是由于加载场景时采用这两种不一样策略,为何内存的占用会差距如此之大,这个机制不太了解。
其实不论发布什么平台,都是这样,可是pc端内存大了也抗的住,而webgl端就太脆弱了,必定要注意。

刚刚想到另外一点,就是若是把场景打成ab包进行加载,也是会巨量占用内存,以前作的webgl项目,场景比较大,这样加载浏览器根本没法承受(除非是很是小的场景)

相关文章
相关标签/搜索