本文主要是介绍资源管理也能快如闪电!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、优秀的优化方式
1. 查看资源加载(卸载)
在UWA性能测评报告的资源管理页面中,研发团队可以方便地查看项目运行时资源的加载情况,如通过Resources.Load/LoadAsync、AssetBundle加载(卸载)的具体资源信息。
我们提供了三种模式供大家自由地查看:查看所有资源、查看指定场景所用资源和查看指定帧所用资源。
通过该界面,研发团队可以明确:
(1)项目运行过程中,哪些资源是通过Resources.Load/LoadAsync来加载的;
(2)项目运行过程中,哪些资源存在频繁加载的情况;
(3)项目运行过程中,资源加载的具体时间点;
(4)项目运行过程中,资源加载的具体耗时。
建议大家通过以上四点,来快速定位资源加载存在的问题和漏洞,并及时对加载逻辑代码进行完善。
2.关注AssetBundle文件加载/卸载方式
在UWA性能测评报告中,大家可以直接查看项目运行时AssetBundle文件的加载方式。目前关于Unity AssetBundle的主流加载方式有以下四种:New WWW、WWW.LoadFromCacheOrDownload、AssetBundle.Load/CreateFromFile和AssetBundle.Load/CreateFromMemory。
点击上图中每个Widget,就可以看到该加载方式的具体使用情况。下图为New WWW在游戏运行过程中的整体调用情况;
建议研发团队对LoadFromMemory谨慎使用。由于LoadFromMemory的加载效率相较其他的接口而言,耗时明显增大,因此我们不建议大规模使用。如果希望对AssetBundle文件加密,那么建议仅对重要的配置文件、代码等进行加密,对纹理、网格等资源文件则无需进行加密。因为目前市面上已经存在一些工具可以从更底层的方式来获取和导出渲染相关的资源,如纹理、网格等,因此,对于这部分的资源加密并不是十分的必要性。
3.关注AssetBundle的具体使用情况
在UWA性能测评报告中,研发团队可以从以下几个方面直接查看AssetBundle文件的具体使用情况。
通过该界面,研发团队可以明确:
(1) AssetBundle文件在项目运行过程中的具体加载时间点;
(2) 具体加载的AssetBundle文件名称;
(3) 具体AssetBundle文件的存放位置;
(4) 每个AssetBundle文件的加载次数。
注意:UWA建议研发团队时刻关注AssetBundle文件的加载次数,查看是否存在同一AssetBundle被持续加载的情况,如上图中蓝色方框1和2所示。
二、大师级优化方式
除了以上提及的优化方式,下文我们将介绍性能优化中省时高效的黑科技,如何在极短时间内快速定位到问题的瓶颈,节省优化的时间,这些分析利器你千万不可错过!
1.查泄露、查驻留,一个都不能少
在UWA性能测评报告的资源管理页面中,研发团队可以方便地查看项目运行时AssetBundle在内存中的驻留情况,从而快速看到AssetBundle是否存在泄露的问题。
上图的AssetBundle使用数量在不断上升,很可能存在AssetBundle资源泄露问题。
同时,研发团队也可以查看指定AssetBundle文件在项目运行过程中的的加载和卸载情况。点击上图的某一帧或某一场景,我们就能查看对应的具体AssetBundle信息,包括具体名称、存放的位置、加载方式、内存中的驻留时长和由该AB加载出的资源数量。
除此之外,UWA报告也提供资源内存的泄漏分析,通过资源的“场景比较”如同种类型场景或同一场景进行比较、不同类型场景进行比较等功能,从而更快速地找到存在“泄露”问题的资源。
2.时刻关注GameObject的Instantiate/Destroy情况
在UWA性能测评报告的资源管理页面中,研发团队不仅可以查看到项目运行时GameObject的Instantiate和Destory调用次数,还可以详细查看每次调用时的具体GameObject信息。
建议研发团队对表格中操作次数大于50的GameObject进行详细分析,避免同一GameObject频繁Instantiate和Destory的操作出现。
3.关注GameObject的Active/Deactive情况
此外,UWA的性能报告界面中还提供了项目在运行时,GameObject的具体Active和Deactive情况。
很多使用过的用户都反馈“大吃一惊”!因为在项目运行1~2万帧的时间里,GameObject Active/Deactive执行了几万甚至几十万次。
如果大家的项目中也存在上述过量的Active/Deactive调用,那么UWA建议可以直接查看页面下方的表格,了解到底是哪些GameObject存在大量的调用操作,然后检测与其相关的脚本,即可快速完善和修复这一问题。
当然,要想驾驭好这些优化利器,还需要有扎实的引擎原理基础,在此小编为大家送上UWA的几篇干货,相信能为大家在资源管理方面的优化事半功倍!
- 你应该知道的AssetBundle管理机制
- Unity 5.x AssetBundle 工作流程详解
- Unity 4.x AssetBundle 工作流程详解
原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。
这篇关于资源管理也能快如闪电!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!