资源检测的正确打开方式
- 作者:admin
- /
- 时间:2016年02月22日
- /
- 浏览:4359 次
- /
- 分类:万象更新
在游戏/VR项目的开发中,对于资源的重视已经成为老生常谈,骨骼数、面片数、材质数的把控不绝于耳...等等,你们考虑过Shader的感受了吗?你们体会过字体的存在感吗?那些粒子特效们,你都伺候好了吗?
不用头疼,这些UWA都帮你们考虑周全啦!在资源检测中,除了现有的纹理、网格、动画、音频、材质、RenderTexture等具体检测之外,现已加入Shader、字体、碰撞体和粒子特效检测等功能。眼下,万事俱备只欠东风了。那么如何查看报告,如何优化呢?侑虎君带你一探究竟。
Shader资源具体使用情况
如上图,我们可以看到项目运行过程中Shader资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 和 “硬件支持”等信息。研发团队可以通过对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。同时,我们建议开发者通过以下几个方面来找“问题”资源:
内存占用
Shader资源的内存占用普遍较低,所以,Shader资源的内存占用一般并不是该类资源在使用时的主要问题。
生存周期
生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。该指标主要可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。所谓 “资源泄露”,是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而造成内存占用不断升高,即内存泄露。 一般来说,不同种类的场景(战斗副本场景和主城市场景),其所加载的资源一般是不一致的,所以副本中的大部分资源在切换回主城市场景时均会被卸载。因此,通过 “生存周期” 指标,您将快速查看到哪些资源长期驻留在内存中,并可以快速排查该资源是确实常驻内存的 预加载资源,还是存在问题的 泄露资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多费同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
字体资源使用情况
同上,该主要展示项目运行过程中字体资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 、“字体尺寸”和 “动态字体”。字体内存往往占据较大的内存占用,因此我们建议您首先通过内存占用 一列进行资源排序,找出占据最大内存的字体资源,并查看其内存分配是否合理。
碰撞体资源的具体使用情况
碰撞体的使用情况很大程度上影响着物理系统的CPU开销。一般来说,项目中经常使用的碰撞体类型主要有:Box Collider,Sphere Collider,Capsule Collider 和 Mesh Collider。其中,Mesh Collider的物理计算开销最大。因此,在该部分我们将项目运行过程中所检测到的Mesh Collider进行统计和展示,以帮助您进行对物理碰撞体的使用有更为清晰和直观的掌握。
内存占用
碰撞体的内存占用普遍较低,所以,其内存占用一般并不是碰撞体在使用时的主要问题。
数量峰值
对于网格碰撞体而言,其本身并没有“冗余度”的说法,因为场景中往往存在大量相同名称、相同内存占用的碰撞体。一般来说,碰撞体在项目运行过程中的使用情况和数量走势是否合理,是需要您时刻关注的事情。
我们知道,资源泄露 是目前大多数研发团队经常遇到且又难于解决的问题。究其原因,是因为项目中的资源量过于巨大,泄露资源往往很难定位。因此,我们在页面中提供了 资源比较 功能,以帮助您快速定位存在“泄露”的资源信息。
场景资源比较
场景资源比较的具体操作方式如下:
1、选择您想进行比较的场景(目前,支持且仅支持两个场景的资源进行比较);
2、点击“ 选中场景资源比较 ”按钮,即可查看资源比较结果。
同时,建议您通过以下两种方式进行资源比较,以便您快速找到存在“泄露”问题的资源:
同种类型场景或同一场景进行比较
一般来说,同种场景或同一场景的资源使用应该是较为固定的,比如游戏项目中的主城场景或主界面场景。通过比较不同时刻同一场景的资源信息,可以快速帮您找到其资源使用的差异情况。这样,您只需判断这些“差异”资源的存在是否合理,即可快速判定是否存在资源泄露,已经具体的泄露资源。
不同类型场景进行比较
除一些常驻资源外,不同类型的场景,其资源使用是完全不同的。比如,游戏中主城和战斗副本的资源,除少部分常驻内存的资源外,二者使用的绝大部分资源应该是不一致的。所以,通过比较两种不同类型的场景,您可以直接查看比较结果中的“共同资源”,并判断其是否确实为预先设定好的常驻资源。如果不是,则它很可能是“泄露”资源,需要您进一步查看项目的资源管理是否存在漏洞。
资源使用曲线
您可以点击任何一个资源来查看其随时间的使用情况,从而更加直观地了解资源出现问题时的具体场景和具体情况。
同时,您可以通过与图表进行交互来查看具体一帧的资源数量和内存占用。
指定场景选择
您可以通过在图表上进行交互来查看具体某一场景的资源使用情况。具体查看方式如下:
1、选择您想查看的场景;
2、点击“查看所选场景资源列表”按钮,即可查看对应场景的资源具体使用情况。
指定帧选择
此外,您还可以查看具体某一帧的资源使用情况,具体查看方式如下:
1.选择您想看的具体帧;
2.点击“查看所选帧资源列表”按钮,即可查看对应帧的资源具体使用情况。
对于资源管理问题,我们建议开发者一定慎重对待,不要因为只有几个“泄露”资源就将其忽视,因为您看到的很可能只是冰山一角,如不及时解决,后患无穷。