关于ab:为什么Unity使用AssetBundle热更的时候要剔除掉mainfest文件

1)为什么Unity应用AssetBundle热更的时候要剔除掉.mainfest文件2)Addressable热更,断点续传问题3)在线性空间,应用后处理解决UI混合问题 这是第341篇UWA技术常识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地把握和学习。 UWA社区主页:community.uwa4d.comUWA QQ群:465082844 AssetBundleQ:为什么Unity应用AssetBundle热更的时候要剔除掉.mainfest文件? A:在应用AssetBundle热更时,Unity会将每个AssetBundle的依赖关系和元数据保留在一个名为文件的文件中。 这个文件形容了AssetBundle的版本、蕴含哪些资源以及它们之间的依赖关系。 .mainfest文件在构建APK或公布AssetBundle包时会被打包进去,无奈通过热更形式更新,在进行AssetBundle热更时,如果不剔除掉文件,则新下载的AssetBundle的文件会笼罩原来的文件,导致所有曾经下载的AssetBundle都须要从新下载,因为它们的依赖关系信息曾经失落。因而,须要在进行AssetBundle热更时将文件从打包列表中剔除,以避免出现这种状况。 感激曼华@UWA问答社区提供了答复 NetworkQ:利用Addressable进行热更,采纳Disable Catalog Update on StartUp形式,当更新进度没有实现时杀掉游戏,再重新启动游戏,此时catalogs.Count曾经等于0,并不会在此触发更新,但其实还有局部资源未更新到,这种状况下应该怎么解决? 1. 首先不能放玩家进入游戏,因为资源不匹配。2. 触发游戏从新更新,此时catalogs.Count=0,并不会更新资源。 这种状况下是否能够应用Addressables.ClearResourceLocators()和 Caching.ClearCache()清理缓存和曾经下载好的资源,再次触发热更,这时catalogs.Count 应该是不等于0的吧?不晓得大家都是怎么解决:资源更新一半杀掉游戏,从新登录游戏? 另外,AddressableAssetSetting->Catalog->Player Version Override这个设置应用的是默认的time stamp还是指定了一个版本号?我这里指定了一个固定版本,导致catalogs.Count=1,永远只是更新这次和母包的差别,比方两头曾经有几次热更了,会把两头几次的热更给抛弃。针对这个问题,更新策略是怎么样的? A1:不应用Addressables.UpdateCatalogs(),本人去服务器上下载Catalog文件,如果下载到一半了,勾销,不批改版本号。下次进来接着去服务器下载Catalog文件。而后本人下载的Catalog文件能够用Addressables.LoadContentCatalogAsync()加载,而后失去IResourceLocator的所有Key,把所有Key传入下载列表中进行下载资源文件。感激liu@UWA问答社区提供了答复 A2:进入游戏第一次Check,之后的那些异步操作都用缓存保存起来即可。感激京一@UWA问答社区提供了答复 A3:第一,你用Disable Catalog Update on StartUp形式启动,就是默认不更新Catalog,然而在走前面更新的时候,Catalog其实曾经更新完了,再调用API更新Catalog天然没有了。这时只有去GetDownloadSize而后间接更资源就行了。 Catalog的更新和资源更新是两个阶段。最好离开治理。 第二,AA其实只比拟资源的Hash,因而没有版本号概念,所以不存在两头版本,永远是最新版本和母包。这个PlayerVersionOverride指你打Player的那个版本号,个别是更新母包时才递增。这种做法能够保障不论玩家手里是哪份资源,都能更到最新的,并且防止两头的逐版本升级流程。 再有,Keys根本还是须要本人去治理,比方你本人治理了20个Keys,而后调用Addressables.UpdateCatalogs()后通知你其中5个更新了。那么如果你立刻调用GetDownloadSizeAsync和DownloadDependenciesAsync,能够马上传入这5个Key。另外一种状况可能你这一次游戏中UpdateCatalogs取得5个更新。然而要到下一次启动游戏才调用GetDownloadSizeAsync和DownloadDependenciesAsync,那你能够把这20个Keys都传进去。 感激黄程@UWA问答社区提供了答复 UIQ:线性空间,美术资源是在Gamma空间制作的,参考该办法:https://blog.csdn.net/euphorias/article/details/125558348 UI成果是对了,然而显著整个界面变暗了,请问大家是如何解决这个问题的? 依据网上的教程,改了下,多了4个Blit,是否还有性能优化空间? A1:如果用URP,能够批改URP源码,场景上应用线性空间,UI应用Gamma空间。<br/>Git上有对应开源代码,实用的Unity版本不同,也都有点小bug须要修复:UI_RenderPipelineInLinearSpaceURP-12-GammaUIAndSplitResolution感激邹彬@UWA问答社区提供了答复 A2:如果3D相机的Renderer上有后处理,并且能改URP的管线,在UberPost的Frag最初间接做LineraToGamma,可能就不必加Pass。 而且,看起来这个后处理脚本是挂在了UIRenderer上,所以会影响到整体的色彩,能够试试在ForwardRenderer渲染完结后,UI绘制之前,对色彩做一次pow(color, 0.45)也就是LinearToGamma来中和最初的UIRenderer后处理的pow(color, 2.2)。 感激范世青@UWA问答社区提供了答复 A3:针对“多了4个Blit,是否还有性能优化空间”问题。间接cmd.Blit(_source, _source, _material);就能够了。感激题主黄大仙@UWA问答社区提供了答复 封面图来源于网络 明天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,咱们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起摸索分享。欢送更多的开发者退出UWA社区。 UWA官网:www.uwa4d.comUWA社区:community.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:465082844

July 4, 2023 · 1 min · jiezi

关于ab:AssetBundle依赖打包有哪些注意点

1)AssetBundle依赖打包有哪些留神点2)子程序集如何援用Assembly-CSharp.dll3)Unity的线性空间下自定义贴图在PS中批改问题4)如何敞开视锥体剔除 这是第318篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。 UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员) AssetBundleQ:AssetBundle依赖打包的留神点有哪些? A:次要有以下几点: 运行时,AssetBundle驻留管制在40MB以内、数量在1000个以内;应用LZ4压缩+LoadFromFile加载;联合我的项目状况依据依赖树制订打包策略,如公共资源独自打AssetBundle、按应用场景和性能类型分包、独立资源打到一起、Shader/字体等(较为细碎、内存不高、高频应用、最好常驻的)资源打包到一起,启动游戏的时候常驻内存;联合热更新需要打包;依赖打包,谋求0冗余;粒度具体没有定值,近期教训上来看会须要尤其警觉AssetBundle包体超过10MB的。另外,倡议应用UWA的在线AssetBundle检测服务疾速定位冗余资源。 感激小ben@UWA问答社区提供了答复 ScriptingQ:如下图,新建程序集,找不到Assembly-CSharp主工程的程序集,请问有其余办法? A:应该和Unity的脚本编译程序无关,Assembly-CSharp.dll和Assembly-CSharp.Editor.dll是在最初,所以子程序集没法援用到。感激罗中杰@UWA问答社区提供了答复 RenderingQ:我遇到了一个问题,在Unity的线性空间下,当我把一张数据贴图(黑白突变图片)和一张数值为“808080”的灰度图在PS中用GAMA空间和线性空间别离导出为png格局的两张图片时(Unity中没有勾选sRGB选项),我发现这两张图片在Shader中的成果是一样的。然而我用电脑自带的图片查看器看两张图成果是不一样的,是Unity在对图片进行了什么设置呢? 是不是意味着我在Substance Painter输入的Roughness和Metallic(在一张图片的两个通道)能够在PS中批改而不必批改PS为线性空间,最初只有在Unity中把sRGB关掉就能够呢? 或者,我是不是能够了解为Unity在线性空间下,无论线性空间的贴图还是GAMA空间的贴图在不勾选sRGB时,Unity都会辨认为线性空间的贴图,在勾选了sRGB时会辨认为GAMA空间? 然而Unity是如何让一张GAMA图片和一张线性图片在不勾选sRGB的状况下保持一致的呢? 以上问题有哪位大拿也已经做过相似的测试,能够来分享一下 RenderingQ:Unity默认是开启的,然而咱们我的项目类型不须要剔除,想着把它关了省些CPU,请问如何敞开? 我在UWA学堂中看到一篇文章,是说在CPU做的剔除。 A:我这两天学URP,发现URP是能够敞开CPU裁剪的,具体是调用了ScriptableRenderContext的Cull办法,这个能够通过批改URP源码实现。感激纪检全@UWA问答社区提供了答复 封面图来源于网络 明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。 官网:www.uwa4d.com官网技术博客:blog.uwa4d.com官网问答社区:answer.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:793972859(原群已满员)

December 20, 2022 · 1 min · jiezi

关于ab:资源打包关系依赖树

1)资源打包关系依赖树2)Coroutines产生了大量GC的问题3)手机端的Soft Shadow如何失效4)Skybox的环境照明问题 这是第292篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。 UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员) AssetBundleQ:想做包体资源剖析,大家有什么好的树显示工具或者思路举荐吗?有比拟好的开源计划也能够。最简略就像N叉树一样,比方root一个文件名,而后开展整个树结构。 A:Unity的Treeview,以下是资源援用依赖查找工具ReferenceFinder的截图。 我的项目地址为:https://github.com/blueberryz... 感激马三小伙儿@UWA问答社区提供了答复 ScriptQ:这种协程产生了大量的GC的问题应该要怎么去定位是在哪里触发的,怎么改呢? A1:能够试试用这个插件查看一下协程的具体详情,看看能不能定位到问题。外面有个CoroutineTracker专门监控协程的。 https://github.com/GameBuildi... 感激Xuan@UWA问答社区提供了答复 A2:倡议如下: 不倡议大量应用协程,会有开销,能够采纳update取代。<br/>如果协程外面产生了GC,能够关注一下是否外面有循环new对象,能够采纳对象池或者用struct。感激aladdin@UWA问答社区提供了答复 A3:yield return new WaitForSeconds(1f); 像这种写法其实会产生GC,能够思考把new WaitForSeconds(1f)提取到函数外。 感激萧小俊@UWA问答社区提供了答复 RenderingQ:手机端的Soft Shadow如何失效? A:能够参考UWA之前的博客文章: 《应用Fast Shadow Receiver优化渲染效率》 《如何实现更实在的软暗影成果》 如果用Unity自带的Soft Shadow,须要留神几个设置项,Graphics Settings外面的Tier2外面必须勾选Cascaded Shadows,这样才会有CollectShadows生成ScreenSpace的Shadowmap。 在Quality Settings外面设置的Cascade Level也会影响暗影的品质,上面两图别离是No Cascades和Four Cascades生成的ScreenSpace Shadowmap的成果。No Cascades Four Cascades 感激Xuan@UWA问答社区提供了答复 RenderingQ:A场景,通过additive的形式加载B场景。2个场景中都没有任何灯光(包含平行光)、Reflection Probe,且Enviroment Reflections的Intensity Mulitiplier为0,纯靠Enviroment Lighting中的Skybox进行照明。 然而SetActive为第二个场景之后,就会发现照明彩色,如右图所示。从新SetActive为第一个场景,环境照明正确,如左图所示。 如果模式不为Skybox而是Color,则没有上述问题。目前打算自建环境光球谐信息,而不应用unity_SHAr相干数据。有什么比拟好的解决方案吗? A:当把场景B设置为Active的时候,整个Game的Environment的设置就主动切换成场景B的设置了,这时候从FrameDebugger外面能够看到球谐系数变成0了。所以两个模型都黑了。 从Skybox改成Color,起作用的是下图中的3个数值,它们不是0,所以不是黑的。 切换场景A为Active的时候的渲染成果,球谐系数是能够获取到的,所以成果也是失常的,如下图。 所以尝试了一下对场景B进行烘焙,当有了LightingData后,切换到场景B,渲染成果也失常了。变亮了是因为场景B原始设置的Intensity multiplier是5,从FrameDebugger外面看球谐系数不是0了,应该是烘焙后的LihgtingData外面保留了球谐系数。 感激Xuan@UWA问答社区提供了答复 明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。 官网:www.uwa4d.com官网技术博客:blog.uwa4d.com官网问答社区:answer.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:793972859(原群已满员)

April 22, 2022 · 1 min · jiezi

关于ab:关于GfxWaitForPresent的耗时问题

1)对于Gfx.WaitForPresent的耗时问题2)对于Spine Shader冗余问题3)Unity增加了ARR插件后导出Android谬误4)对压缩格局的纹理调用GetPixels办法的疑难 这是第284篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。 UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员) SpriteAtlasQ:Profiler里看手机上的CPU、GPU耗时,发现有时候CPU上Gfx.WaitForPresentOnGfxThread的工夫是GPU耗时的几倍。能够看出GPU耗时只有9毫秒,然而CPU期待了29毫秒,是GPU耗时的3倍多,请问这是什么起因导致的? A:个别WaitForPresent呈现一段耗时示意CPU在期待GPU渲染,个别是GPU压力大,渲染线程会有一段Gfx.PresentFrame(Vulkan的话子堆栈还有GfxDeviceVK.Present),最常见的状况如下: 若同时CPU开销也比拟高,这段期待也会被代码耗时所笼罩,如下(主线程Sleep 4ms): 从题主的截图来看是开启了Profiler的GPU Mode,该模式对GL接口打点会性能更低,渲染线程能够看到GPUProfiler.Begin/EndQueries打点的耗时,体现在主线程就是Wait的耗时高,如下(倡议敞开GPU Mode再进行测试): 对于题主形容的在主线程WaitForPresent存在肯定的开销的状况下,渲染线程简直没有统计到任何开销状况,不晓得大家有没有遇到过相似的问题。 感激羽飞@UWA问答社区提供了答复 AssetBundleQ:如下图所示,做一个预制体放到AssetBundle包中,预制体只蕴含一个Spine对象,但每次打AssetBundle包都会把Spine的5个Shader打包到AssetBundle包外面,这种AssetBundle极为冗余。 并且如下图所示,Spine的五个Shader曾经增加到Always Included Shaders中。请问是否有什么办法能够解决Spine AssetBundle包中的Shader冗余? A1:把Spine的资源也打包,反正就几个Shader和材质球。感激1 9 7 3-311135@UWA问答社区提供了答复 A2:像Spine这种第三方插件的Shader,不属于Unity内置的Shader,放入Always Included Shaders设置项中是没有任何用途的。须要本人对它们被动打包进AssetBundle中,否则其余AssetBundle中用到了它们的援用,就会被动将其拉进AssetBundle中。被动打包后,其余用到这个Spine Shader的AssetBundle只是会依赖Spine Shader打的AssetBundle。感激Xuan@UWA问答社区提供了答复 A3:像这样的需要,须要本人在打包策略上做解决,能够把资源援用都关联,本人独自解决每个包的依赖,本人在Shader列表里退出一些黑名单,或者在打包依赖里本人解决,这就看本人想怎么设计关联与依赖了。感激廖武兴@UWA问答社区提供了答复 AndroidQ:Unity降级到版本2021.2.8。之前能够间接把res目录放在Plugins/Android/res,然而当初如同改了,详情能够参考以下网址:https://docs.unity3d.com/2022... 否则谬误提醒:OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated... 当初我从Android Studio中生成AAR导入到Unity中打包,还是报错: A:之前用Unity 2019的AAR包中我都把Androidmainfest.xml删除了,然而降级到了Untiy 2021.2.8版本就出问题了,解决方案就是保留AAR中的AndroidMainfest.xml,本人手动合并。感激题主zerolj@UWA问答社区提供了答复 TextureQ:看官网文档,如果纹理设置开关R/W Enabled启用时,能够通过Texture.GetPixels/SetPixels读写纹理数据。 请问,压缩格局的纹理(比方ETC)在内存中的模式应该是未解压的,那么在调用GetPixels时会在CPU端解压吗? A:在Unity 2019.4.10f1上做了一个测试,代码如下: 后果如下: 右边是ETC2 8Bits,左边是代码生成的,2是原图,n/a是代码生成的,从手机截图上看,肉眼仿佛分辨不出区别。 又做了一个额定的测试,让不压缩的图GetPixels,和ETC2的图GetPixels的值作差。 后果如下图,失去的是一个全黑的图,右边是ETC2格局的图,左边是生成的图。 由下面的测试可知,GetPixels失去的值是和RGBA32格局的数值是统一的。猜想底层在操作GetPixels时,应该做理解压。 感激Xuan@UWA问答社区提供了答复 封面图来源于网络 明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。 官网:www.uwa4d.com官网技术博客:blog.uwa4d.com官网问答社区:answer.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:793972859(原群已满员)

January 26, 2022 · 1 min · jiezi

关于ab:游戏项目中如何制定资源管理与加载策略

1)游戏我的项目中如何制订资源管理与加载策略2)对于热更新包体大小的最佳实际3)URP某些Shader资源屡次呈现4)对于手机发热问题如何动手5)如何优化Delegate.Add/Remove这类堆内存的调配 这是第267篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。 UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员) AddressableQ:第一个问题:当初Addressable的应用状况怎么样?应用相似Xassets一类的插件用于资源管理怎么样? 第二个问题:游戏启动的时候,热更资源,资源文件下载是以散文件的形式一个个下载好,还是打成一个整包下载好? 第三个问题:以前咱们把AssetBundle包打到安装包内,而后装置完之后第1次启动时要把AssetBundle包解压到里面文件夹。这么做的益处就是对立保护一个内部资源目录,加载资源时不须要先判断里面目录再判断外面,而后依据资源在哪个目录写两种不同的加载形式。然而如果解压到里面,装置完之后整个游戏会增大很多。据说加载包内的资源比加载包外的更快,所以想问一下有没有必要再做解压这一个步骤? A1:答复如下: 1.当初不太倡议应用原生Addressable,因为在目前看到的一些我的项目中,冗余问题仍然存在,而且无论是加载还是内存,问题都很多。加载的效率并不高,一旦做错,还会造成更差的问题,容错率比拟低。 当初的大型团队基本上都在本人写这套零碎了,便于查找起因。加载这块属于一个游戏的骨架(龙骨),不出问题没人留神,一出问题就有可能是致命的。 2.Xasset没做过调研不太分明。 3.打成一个整包的,而后做差异化包,版本跨度越大,差别包越多,大文件下载也要思考到断点续传的问题和多线程下载。要做很多解决,可能要接一个小插件,做减速、做断点续传、做多线程等,容易出问题。 散文件、颗粒度比拟小,每次更新就更新几个文件,不必生成差别包。大版本更新就会下很多文件,然而不必思考它的断点续传,因为文件比拟小。还有一个益处就是同时能够起多条链接下载,安卓目前勾销了链接数量下限,然而IO会很多。 4.没有必要解压,它在包内StreamingAssets下也是非压缩的,所以加载效率没问题。 该答复由UWA提供 A2:冗余问题, 预计他们是没有用Analyze工具剖析冗余,我做过试验用Analyze工具剖析解决冗余后,把生成后的Bundle提交到UWA的资源查看,剖析失去的后果合乎预期,没有意外的冗余问题,根本查看出的冗余,只有你用工具解决了,剖析后冗余就不存在了。感激在路上哈哈@UWA问答社区提供了答复 A3:略微补充一下:1.Addressable针对做分包(外围包、可选包等)反对并不好,尽管有Catalog的别离下载更新,然而制作层面却没有很好反对。异步加载流程不能被Cancel掉,一旦发动必须走完,最初说这个资源不要了。它算是一项可选的比拟通用的解决方案,但还是太通用和高级,一些中小型我的项目还是能够用的。然而我的项目一旦做简单点,需要多了就可能应酬不了。当然这也是Unity团队无奈八面玲珑、对应齐全的。一种思路是后期应用它,而后须要安顿人深刻了解和把握,到我的项目中后期呈现需要的时候入手改,毕竟代码都有。绝对本人从0开始做一套零碎还是有劣势的。 2.下载环节还是倡议思考合包下载,毕竟不停开关N个HTTP连贯耗费也是不少的,尤其当下载的粒度太细,Patch自身Size很小的状况下,会发现下载速度上不去。能够思考客户端解决上还是小文件,但服务器端将相干Patch整顿在一起合进大文件,而后利用HTTP的Range下载模式来定位下载这个大文件中一部分间断数据,这样缩小HTTP连接数,进步下载效率。 3.读取在StreamingAssets内的AssetBundle文件不大,引擎本人搞定,然而读取非AssetBundle的资源,在Android平台下须要自行处理一下,无奈用File.Open的模式关上,须要接入NDK的AAssetManager接口来拜访。 感激黄程@UWA问答社区提供了答复,欢送大家转至社区交换: AssetBundleQ:对于热更新包体的大小,最佳实际是多少?多大以上的更新倡议不采纳热更新而采纳全包更新?如果一次更新的内容比拟大,是否倡议还是全包更新比拟适合?蕴含多个AssetBundle。 A1:基本上当初AssetBundle都曾经将其每个大小管制在5~10MB以下(5.3以前是1MB),这样就能够保障IO次数和热更新内容都尽可能小。 整包更新都不太好,会有大略10~15%的用户散失,所以能热更还是热更。热更新包的大小次要是去除冗余,因为LZ4自身曾经是压缩级别了。 感激OCEAN@UWA问答社区提供了答复 A2:国内渠道商比拟多,获客老本比拟高,所以换包的损失比拟大,能走热更新还是尽量走热更新。 而后也能够考虑一下国内的一些第三方热更公司,比方乐变,他们反对无感知边玩边下,以热更新的形式替换主包。 感激萧小俊@UWA问答社区提供了答复,欢送大家转至社区交换: ShaderQ:如下图所示:1.景象:这些资源呈现2份是什么起因?2.目前Shader内存占用太高了,是否给些举荐倡议? A:1.在编辑器中,当GraphicsSettings外面设置了RenderPipelineAsset之后,RenderPipelineAsset最终会援用PostProcessData,PostProcessData中援用了各种后处理相干的Shader,所以打包的时候,会将各种后处理相干的Shader打包进包体,比方UberPost、Bloom等。 而且这些资源会在RenderPipeline初始化的时候被加载进内存。这是UberPost的第一个实例的起源。 2.当咱们在游戏实时运行的时候,比方波及到切换RenderPipeline的操作,应用了AssetBundle加载RenderPipelineAsset,这样在AssetBundle中就又有了一份PostProcessData,因而这些后处理相干的Shader就又被加载了一次。总共就有2份UberPost了。 3.对此咱们倡议所有的RenderPipelineAsset相干的资源都由AssetBundle解决,在Editor的GraphicsSettings中将RenderPipelineAsset移除。通过脚本来动静从AssetBundle中加载并赋值。 4.能够创立一个空场景放在所有场景之前,在这个场景中动静加载RenderPipelineAsset,并赋值给GraphicsSetting.renderPipelineAsset,如下图: 之后所有的问题都只有留神AssetBundle的冗余就能够了。 优化Shader: 1.UberPost的Shader能够思考将用不到的Keyword给正文掉。如下图: 2.对于内存占用十分多的Shader,须要优化Keyword组合数量,倡议参考《Stripping scriptable shader variants》,应用后处理来优化Shader变体组合数量。 感激始终有点困的仓鼠@UWA问答社区提供了答复,欢送大家转至社区交换: PerformanceQ:对于手机发热问题,该从哪些方面动手?咱们我的项目次要有大量PBR,另外模型都是高模。是不是手机性能越高,发热越显著? A1:这个能够反推一下:发热=耗电高耗电高=GPU CPU高负荷最无效的形式应该是先锁帧,而后就是想方法优化GPU和CPU了,针对这2个优化计划有很多,能够找找适宜你们我的项目的。感激萧小俊@UWA问答社区提供了答复 A2:答复如下:1.发烫的问题都是从CPU\GPU和IO动手的。2.不是。性能越差,同样的计算力,发热才会更显著。这块集体认为是须要定位下耗时在哪里才好做判断的。没有对立说性能好发热也显著的说法。比方:你们做了分级策略,在高端设施上开的成果越大,那天然发热发烫就显著。感激OCEAN@UWA问答社区提供了答复 A3:发热是肯定会有的,并不是说做好了之后就没有发热,而是多久能发热到多少度,达到一个预期就行:1.首先要定好分级策略,其次再查对应分级设施上的发热问题。2.还有就是先限度好30帧,做好30帧的发热问题,再去做高帧率的发热问题。3.能够通过UWA的温度模块看发热的趋势,还是比拟精确的,温度过高就会导致降频。4.就咱们我的项目解决发热的流程来看,发热与功耗是正相干的。 这个功耗可能是CPU,也可能是GPU,功耗能够通过PerfDog查看,也能够参考雨松的文章《Unity3D研究院之实时获取手机电流、电压、计算功率发热(一百一十八)》,别离测试CPU和GPU哪块功耗高具体定位一下。 PBR我的项目可能次要是GPU,GPU次要就是带宽和计算量,带宽占大头,带宽也分为两局部Read/Write Bandwidth。Read是上传几何信息和贴图,Write次要是写回到FrameBuffer和RT的存储,对于带宽能够应用Arm MS StreamLine工具或者PerfDog辅助查看一下(只有Mali的GPU能够看),到最初可能还是让美术去优化资源。 5.CPU的就要具体模块具体看了,留神线程的应用。Profiler看不到,过后咱们就是遇到线程内的问题导致的发热,查起来比拟麻烦。 感激范世青@UWA问答社区提供了答复,欢送大家转至社区交换: ScriptQ:如何优化Delegate.Add/Remove这类堆内存调配问题? A1:升高应用频率,尤其是不要在一个代理里加过多的函数,会导致其堆内存调配更大,因为其实现原理是复制一个List来应用的。感激OCEAN@UWA问答社区提供了答复 A2:其实Delegate的+= 是会有很重大的GC问题的,能够思考用一个字典去代替。感激萧小俊@UWA问答社区提供了答复,欢送大家转至社区交换: 20210913更多精彩问题等你答复~ 1.Vulkan API的性能及兼容性2.Unity TMP字体计划如何抉择3.如何实现AAB包的增量更新 封面图来源于网络 明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。 官网:www.uwa4d.com官网技术博客:blog.uwa4d.com官网问答社区:answer.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:793972859(原群已满员)

September 27, 2021 · 1 min · jiezi

关于ab:ab测试

ab测试应用ab进行页面的压力测试 ab是apache自带的一个很好用的压力测试工具,当装置完apache的时候,就能够在bin上面找到ab 1 咱们能够模仿100个并发用户,对一个页面发送1000个申请./ab -n1000 -c100  其中-n代表申请数,-c代表并发数 返回后果: 首先是apache的版本信息 This is ApacheBench, Version 2.3 <Revision:655654Revision:655654> Copyright 1996 Adam Twiss, Zeus Technology Ltd,Licensed to The Apache Software Foundation,  Benchmarking vm1.jianfeng.com (be patient) Server Software:        Apache/2.2.19    ##apache版本 Server Hostname:        vm1.jianfeng.com   ##申请的机子 Server Port:            80 ##申请端口Document Path:          /a.html Document Length:        25 bytes  ##页面长度Concurrency Level:      100  ##并发数 Time taken for tests:   0.273 seconds  ##共应用了多少工夫 Complete requests:      1000   ##申请数 Failed requests:        0   ##失败申请 Write errors:           0   Total transferred:      275000 bytes  ##总共传输字节数,蕴含http的头信息等 HTML transferred:       25000 bytes  ##html字节数,理论的页面传递字节数 Requests per second:    3661.60 [#/sec] (mean)  ##每秒多少申请,这个是十分重要的参数数值,服务器的吞吐量 Time per request:       27.310 [ms] (mean)  ##用户均匀申请等待时间 Time per request:       0.273 [ms] (mean, across all concurrent requests)  ##服务器均匀解决工夫,也就是服务器吞吐量的倒数 Transfer rate:          983.34 [Kbytes/sec] received  ##每秒获取的数据长度Connection Times (ms)               min  mean[+/-sd] median   max Connect:        0    1   2.3      0      16 Processing:     6   25   3.2     25      32 Waiting:        5   24   3.2     25      32 Total:          6   25   4.0     25      48Percentage of the requests served within a certain time (ms)   50%     25  ## 50%的申请在25ms内返回   66%     26  ## 60%的申请在26ms内返回   75%     26   80%     26   90%     27   95%     31   98%     38   99%     43 100%     48 (longest request)   2 ab也能够运行在windows中,如果在windows下装置apache,就能够在bin下找到ab.exe间接就能够应用,不必依赖其余的dll上面是我应用ab.exe 测试新浪一个页面的后果网页核心: C:\Users\nickyjf\Desktop\useful>ab -n1000 -c100This is ApacheBench, Version 2.3 <Revision:655654Revision:655654> Copyright 1996 Adam Twiss, Zeus Technology Ltd, Licensed to The Apache Software Foundation,  ...

July 23, 2021 · 2 min · jiezi