当前位置: 首页 > news >正文

企业网站留言石家庄新闻

企业网站留言,石家庄新闻,cute wordpress主题破解版,wordpress file size情况 最近场景越来越大,大概800M的场景加载时间可能长达40秒左右,所以需要测试看看发生了什么。 测试环境 测试环境Win10,21thI5-12600KF,32GRam , Nvidia GF RTX2060 32G Scene1大小:741M 加载代码 首…

情况

最近场景越来越大,大概800M的场景加载时间可能长达40秒左右,所以需要测试看看发生了什么。

测试环境

测试环境Win10,21thI5-12600KF,32GRam , Nvidia GF RTX2060 32G
Scene1大小:741M

加载代码

首先放上部分的加载场景的代码:

        public float sceneprog;public AsyncOperation sceneAsync;async public Task LoadScene(string path){sceneprog = 0f;await Task.Delay(10);StreamAssetVer sav = GameJsonMain.inst.Get(path);if (sav == null){Debug.LogWarning("不存在的场景:" + path);return ;}if (!sav.isab){Debug.LogWarning("场景isab必须对勾:" + path);return;}float loadtime = Time.realtimeSinceStartup;float computloadtime;float ratetime = 0.9f;//Application.backgroundLoadingPriority = ThreadPriority.Low;Debug.Log("LoadScene - begin ..."+ Application.backgroundLoadingPriority);
#if UNITY_EDITOR && TESTRESstring[] dirs = UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundle(path);//Object[] listobj = new Object[dirs.Length];if(dirs.Length == 0)Debug.LogWarning("找不到这个资源:" + path);for (int i = 0; i < dirs.Length; i++){string assetPathAndName = dirs[i];LoadSceneParameters ls;ls = new LoadSceneParameters();ls.loadSceneMode = LoadSceneMode.Additive;sceneAsync = EditorSceneManager.LoadSceneAsyncInPlayMode(assetPathAndName,ls);  // .LoadSceneInPlayMode(assetPathAndName, ls);sceneAsync.allowSceneActivation = false;while (sceneAsync.progress < 0.9f){sceneprog = sceneAsync.progress;await Task.Delay(100);Debug.Log("load - " + sceneprog);}//sceneAsync.allowSceneActivation = true;//listobj[i] = null;}sceneprog = 1f;//Debug.Log("load1 - " + sceneprog);computloadtime = Time.realtimeSinceStartup - loadtime;Debug.Log("LoadScene unity- load file time : " + computloadtime);return ;
#endifTask<UnityWebRequest> task;if (sav.include){task = streamingAssetsLoader(sav);}else{task = AssetsLoader(sav);}await task;UnityWebRequest www = task.Result;if (www.result != UnityWebRequest.Result.Success){www.Dispose();return ;}computloadtime = Time.realtimeSinceStartup - loadtime;Debug.Log("LoadScene - load file time : " + computloadtime);//这个LoadFromFileAsync函数的路径不需要file://AssetBundleCreateRequest abRequest;
#if UNITY_EDITORabRequest = AssetBundle.LoadFromFileAsync(sav.savepath.Replace(filelink, ""));
#elseif(Application.platform == RuntimePlatform.Android){abRequest = AssetBundle.LoadFromFileAsync(sav.savepath);}else{abRequest = AssetBundle.LoadFromFileAsync(sav.savepath.Replace(filelink, ""));}
#endifabRequest.allowSceneActivation = false;while (!abRequest.isDone){sceneprog = abRequest.progress;await Task.Delay(100);//Debug.Log("ab:"+ sceneprog);}abRequest.allowSceneActivation = true;AssetBundle ab = abRequest.assetBundle;computloadtime = Time.realtimeSinceStartup - loadtime;Debug.Log("LoadScene - load AssetBundle time :" + computloadtime);//Debug.Log("ab1:ok," + sav.path +" - "+ sav.url);sceneAsync = SceneManager.LoadSceneAsync(sav.path, LoadSceneMode.Additive);sceneAsync.allowSceneActivation = false;while (sceneAsync.progress < 0.9f){sceneprog = ratetime + sceneAsync.progress * (1- ratetime);await Task.Delay(100);//Debug.Log("load:" + sceneprog);}sceneprog = 1f;computloadtime = Time.realtimeSinceStartup - loadtime;Debug.Log("LoadScene - load LoadSceneAsync time :" + computloadtime);await Task.Delay(300);//sceneAsync.allowSceneActivation = true;//SceneManager.LoadScene(ab.GetAllScenePaths()[0]);//Object[] objs = ab. ab.LoadAllAssets();www.Dispose();ab.Unload(false);return ;}

大致代码分为2部分,在编辑器下#if UNITY_EDITOR && TESTRES 使用编辑器加载方式。

首先我们直接用编辑器通过UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundle(path);方法来载入,大概需要5.5-7秒时间。为什么AB包需要那么久 ?

异步和同步加载测试

所有有了下面的AB包测试。
因为是AB包下载,所以关闭宏定义TESTRES ,我在想是不是使用了AssetBundle.LoadFromFileAsync来异步加载的,所以比较慢,所以把函数改为了AssetBundle.LoadFromFile,发现:

同步LoadFromFile方式:33秒
异步LoadFromFileAsync方式:38秒

时间都挺长的,发现有一个修改后台CPU级别的函数Application.backgroundLoadingPriority。

  • ThreadPriority.Low - 2ms
  • ThreadPriority.BelowNormal - 4ms
  • ThreadPriority.Normal - 10ms
  • ThreadPriority.High - 50ms
    改为了High,发现测试的结果相差不大。

压缩方式的对比

把场景的AB包我又打包成了无压缩格式和LZ4格式。我们看看测试结论
默认我的场景是LZMA格式

LZMA : 38秒
无压缩: 4.8秒
LZ4 : 4.7秒

结论

LZ4的压缩方式解压速度非常快和无压缩相差不大,压缩后大小比无压缩强的多,这种不需要从公网下载资源的推荐LZ4。

知识点

LZMA通过UnityWebRequestAssetBundle加载的LZMA格式AB包将自动重新压缩为LZ4压缩,并缓存在本地文件系统上。而通过自己写的下载方案,则可以调用AssetBundle.RecompressAssetBundleAsync API重新压缩。

参考:

https://zhuanlan.zhihu.com/p/342694796

Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO

https://segmentfault.com/a/1190000019656656

http://www.tj-hxxt.cn/news/9535.html

相关文章:

  • 微商做网站短视频代运营方案策划书
  • 学校文化建设网站黑帽seo365t技术
  • 如何安装免费wordpress主题辽宁seo推广
  • 做公司网站的时间软文代写发布
  • 湛江市网站建设上海网络推广培训学校
  • 国都建设集团网站seo公司的选上海百首网络
  • 国内禁用的国外网站seo排名优化代理
  • 网站a记录的是做cname佛山百度关键词排名
  • 网站建设作业南宁seo优化公司排名
  • 南京500元做网站自己做网站怎么做
  • 学做效果图网站有哪些软件吉安seo招聘
  • 国外社交网站设计欣赏产品推销
  • 恒彩装饰公司口碑佛山seo联系方式
  • 做网站ps建立多大的画布软文推广营销
  • 万网主机怎么做网站电商网络推广怎么做
  • 四川明腾信息技术有限公司深圳关键词优化怎么样
  • 网站建设招标说明书企业qq
  • 香港服务器免备案百度seo多久能优化关键词
  • 广州网站优化公司个人网站seo
  • 企业官网网站 优帮云谷歌google官方下载
  • 哪家手机网站建设windows优化大师使用方法
  • 外贸网站做纸尿裤怎么样qq空间刷赞网站推广
  • 垂直网站建设方案书网红推广
  • 做蛋糕网站的优点整合营销传播的方法包括
  • 东莞寮步镇疫情最新情况济南seo网站排名优化工具
  • 公司电商网站建设方案网站分析案例
  • 网站测评必须做电脑培训班有哪些科目
  • 用asp.net做的购物网站做网站比较好的公司有哪些
  • 网站开发流程宜春郑州网站优化培训
  • 做产品网站多少钱谷歌搜索引擎下载安装