温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-31 13:51:03 来源:网络 阅读:878 作者:lreach 栏目:游戏开发

win10
unity2018.2.6

加载场景现在习惯用异步加载

AsyncOperation ao = SceneManager.LoadSceneAsync(string SceneName);

写在协程里,而从ao中可以获得加载进度

float progress = ao.progress;

这样可以控制加载进度条,或者文字显示百分比

按照网上很多事例的同样用法,一般是先把自动加载场景关掉

ao.allowSceneActivation = false;

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

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

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

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

但是这里有个小坑,尤其是webgl端要注意的是如果一开始设置

ao.allowSceneActivation = false;

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

所以,正确做法就是一开始就设置为true

ao.allowSceneActivation = true;

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI