资源检测的正确打开方式

资源检测的正确打开方式

在游戏/VR项目的开发中,对于资源的重视已经成为老生常谈,骨骼数、面片数、材质数的把控不绝于耳...等等,你们考虑过Shader的感受了吗?你们体会过字体的存在感吗?那些粒子特效们,你都伺候好了吗?

不用头疼,这些UWA都帮你们考虑周全啦!在资源检测中,除了现有的纹理、网格、动画、音频、材质、RenderTexture等具体检测之外,现已加入Shader、字体、碰撞体和粒子特效检测等功能。眼下,万事俱备只欠东风了。那么如何查看报告,如何优化呢?侑虎君带你一探究竟。


Shader资源具体使用情况

UWA Tech Doc

如上图,我们可以看到项目运行过程中Shader资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 和 “硬件支持”等信息。研发团队可以通过对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。同时,我们建议开发者通过以下几个方面来找“问题”资源:

内存占用

Shader资源的内存占用普遍较低,所以,Shader资源的内存占用一般并不是该类资源在使用时的主要问题。

生存周期

生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。该指标主要可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。所谓 “资源泄露”,是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而造成内存占用不断升高,即内存泄露。 一般来说,不同种类的场景(战斗副本场景和主城市场景),其所加载的资源一般是不一致的,所以副本中的大部分资源在切换回主城市场景时均会被卸载。因此,通过 “生存周期” 指标,您将快速查看到哪些资源长期驻留在内存中,并可以快速排查该资源是确实常驻内存的 预加载资源,还是存在问题的 泄露资源。

数量峰值

数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多费同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。


字体资源使用情况

UWA Tech Doc

同上,该主要展示项目运行过程中字体资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 、“字体尺寸”和 “动态字体”。字体内存往往占据较大的内存占用,因此我们建议您首先通过内存占用 一列进行资源排序,找出占据最大内存的字体资源,并查看其内存分配是否合理。


碰撞体资源的具体使用情况

UWA Tech Doc

碰撞体的使用情况很大程度上影响着物理系统的CPU开销。一般来说,项目中经常使用的碰撞体类型主要有:Box Collider,Sphere Collider,Capsule Collider 和 Mesh Collider。其中,Mesh Collider的物理计算开销最大。因此,在该部分我们将项目运行过程中所检测到的Mesh Collider进行统计和展示,以帮助您进行对物理碰撞体的使用有更为清晰和直观的掌握。

内存占用

碰撞体的内存占用普遍较低,所以,其内存占用一般并不是碰撞体在使用时的主要问题。

数量峰值

对于网格碰撞体而言,其本身并没有“冗余度”的说法,因为场景中往往存在大量相同名称、相同内存占用的碰撞体。一般来说,碰撞体在项目运行过程中的使用情况和数量走势是否合理,是需要您时刻关注的事情。


我们知道,资源泄露 是目前大多数研发团队经常遇到且又难于解决的问题。究其原因,是因为项目中的资源量过于巨大,泄露资源往往很难定位。因此,我们在页面中提供了 资源比较 功能,以帮助您快速定位存在“泄露”的资源信息。

场景资源比较

场景资源比较的具体操作方式如下:

1、选择您想进行比较的场景(目前,支持且仅支持两个场景的资源进行比较);
2、点击“ 选中场景资源比较 ”按钮,即可查看资源比较结果。

UWA Tech Doc

同时,建议您通过以下两种方式进行资源比较,以便您快速找到存在“泄露”问题的资源:

同种类型场景或同一场景进行比较

一般来说,同种场景或同一场景的资源使用应该是较为固定的,比如游戏项目中的主城场景或主界面场景。通过比较不同时刻同一场景的资源信息,可以快速帮您找到其资源使用的差异情况。这样,您只需判断这些“差异”资源的存在是否合理,即可快速判定是否存在资源泄露,已经具体的泄露资源。

不同类型场景进行比较

除一些常驻资源外,不同类型的场景,其资源使用是完全不同的。比如,游戏中主城和战斗副本的资源,除少部分常驻内存的资源外,二者使用的绝大部分资源应该是不一致的。所以,通过比较两种不同类型的场景,您可以直接查看比较结果中的“共同资源”,并判断其是否确实为预先设定好的常驻资源。如果不是,则它很可能是“泄露”资源,需要您进一步查看项目的资源管理是否存在漏洞。


资源使用曲线

您可以点击任何一个资源来查看其随时间的使用情况,从而更加直观地了解资源出现问题时的具体场景和具体情况。
同时,您可以通过与图表进行交互来查看具体一帧的资源数量和内存占用。

UWA Tech Doc

指定场景选择

您可以通过在图表上进行交互来查看具体某一场景的资源使用情况。具体查看方式如下:

1、选择您想查看的场景;
2、点击“查看所选场景资源列表”按钮,即可查看对应场景的资源具体使用情况。

UWA Tech Doc

指定帧选择

此外,您还可以查看具体某一帧的资源使用情况,具体查看方式如下:

1.选择您想看的具体帧;
2.点击“查看所选帧资源列表”按钮,即可查看对应帧的资源具体使用情况。

UWA Tech Doc

对于资源管理问题,我们建议开发者一定慎重对待,不要因为只有几个“泄露”资源就将其忽视,因为您看到的很可能只是冰山一角,如不及时解决,后患无穷。