新功能特性详细说明
UWA本次新功能的特性主要为资源加载、GameObject Instantiate/Destroy、GameObject Active/Deactive、资源管理汇总四大功能模块,下面小编将一一为大家说明。
一、资源加载
重点分析项目通过Resources和AssetBundle的加载开销,说明如下:
1. AssetBundle资源加载
在AssetBundle加载页面中,用户可以看到每个具体资源在项目检测过程中的具体CPU耗时,同时我们在之前版本的基础上还明确了资源的加载母体AssetBundle信息,这样可以帮助研发团队更加方便地定位和优化。
2. Resource加载
支持用户在Resource加载页面中对耗时选项进行排序,其资源加载耗时的Top10即可一目了然。
特别说明:该新功能不仅可以让用户看到整体加载耗时和加载次数,同时还可以通过图表来显示具体每次加载的位置和耗时。如下图,资源文件cite_girl(图中右上角)是通过AssetBundle.Load来加载的,可以看到在项目检测过程中,该资源被频繁加载,且每次加载耗时主要集中在100~200ms之间。
下图中的SpeedRaceUI和UIscene_BJT是通过Resources.Load来加载的,可以看到在项目检测过程中,该资源被频繁加载,前者加载耗时主要集中在300ms左右,后者则主要集中在150ms左右。
二、GameObject Instantiate/Destroy
GameObject实例化和销毁耗时同样是研发团队非常希望掌握的一个关键点。在UWA今天更新的版本中,我们将会让研发团队明确任何一个GameObject在实例化和销毁时的CPU占用情况。大家不仅可以看到最为耗时的GameObject,同时还可以看到其每次触发的时间点。
下图中的YX_DCJM_02,在游戏过程中被频繁实例化,且每次耗时均将近100ms,对此,研发团队完全可以考虑将其缓存,以避免后续0.1s的开销。
三、GameObject Active/Deactive
GameObject Active/Deactive是研发团队非常容易忽视的,大多数团队认为状态的切换开销甚微,但正是由于这些“疏忽”导致了某些GameObject的Active/Deactive切换造成了大量的CPU耗时。
下图则为游戏检测过程中,shadow的Active/Deactive的操作由于大量次数的累积,都是属于一个较高的耗时。
通过这些功能中的数据,研发团队可以从以下几点进行针对性优化:
- 针对加载频繁且耗时的资源,可以详细对其资源进行检测,查看是否有进一步优化的空间(比如纹理可检查其分辨率、格式等);
- 当研发团队明确了加载或实例化的瓶颈后,可针对具体资源、GameObject进行缓存,从而降低其CPU耗时。
四、资源管理汇总
以UWA的优化经验来看,二八定律同样适用于项目的开发管理,即80%的性能问题集中在20%的资源中。为此,我们将需要注意的Top10的问题直接反馈给用户(新版本中的“资源管理汇总”界面),用户通过对这些重点对象的快速处理,能在短期时间内达到立竿见影的优化效果。目前主要包括:
(1)AssetBundle的加载次数Top10
(2)资源加载的次数和耗时Top10
(3)GameObject 实例化/销毁次数和耗时Top10
(4)GameObject Active/Deactive次数和耗时Top10
五、其他更新
1. 截图功能更新
在当前版本中,我们将项目的运行截图从原来的 5秒/张 提升为 1秒/张,从而反映更详细全面的项目运行情况,助您更犀利地洞察每一个性能瓶颈,捕捉任何可以优化的机会!
2. iOS SDK 更新
在当前版本中,我们大力完善了SDK的兼容,主要包括:
- 增加了截图功能对Metal的支持,不再限制打包项目时所选择的Graphic API
- 增加了对使用sLua和ToLua项目的支持
- 增加了对使用sLua,ToLua和uLua的项目的集成检测功能,用户可以一键检测SDK的集成是否成功
原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。