具体资源信息
【具体资源信息】页面主要展示项目运行过程中各种资源的具体使用情况,主要包括以下几个部分:
具体资源使用情况
该项展示的资源信息根据资源种类的不同而不同,具体如下:
纹理资源
该项主要展示项目运行过程中纹理资源的 “资源名称”、“生存周期”、“内存占用”、“数量峰值”、“高度”、“宽度”、“格式” 和 “Mipmap数量”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看可能存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来查找 “问题” 资源:
内存占用
内存占用是最需要您关注的一项指标,因为在全部资源的内存占用中,纹理资源往往占据了80%以上。因此,建议您首先通过 “内存占用” 一列进行资源排序,找出占据最大内存的纹理资源,并查看其内存分配是否合理。
纹理格式
纹理格式经常是造成资源占据较大内存的主要原因。通过大量的深度检测,我们发现大多数项目中均存在大量的RGBA32、ARGB32和RGB24格式的纹理资源,且这些资源往往是可以通过更为合理的硬件支持纹理所替代(ETC、PVRTC、DXT等)。因此,我们建议您详细排查纹理资源的使用格式,排除由纹理格式导致的内存占用过大问题。
高度 和 宽度
纹理资源的分辨率同样也是造成内存占用过大的主要原因。一般来说,分辨率越高,其内存占用则越大,因此,您最为需要关注的是占据较大分辨率(一般为 ≥ 1024)的纹理,尽可能遵循 “够用就好” 的原则,避免不必要的空间浪费。 同时,在这两列中,您还需要关注 NPOT 的纹理资源,即长度或宽度非2的幂次。对于 iOS 平台,仅长宽均为2的幂次(POT)且长宽相等的纹理才能被压缩成 PVRTC 格式,对于 Android 平台,同样需要纹理资源的长宽均为2的幂次(POT),才能被压缩成 ETC1 格式。 另外,建议您查看项目中是否存在大量低分辨率(长宽 ≤ 128)纹理资源,如果存在,则需要查看是否可以将这些低分辨率资源进行拼合,即 Texture Packing,从而降低项目中Material的数量,进而为后续的 Draw Call Batching 做铺垫。
Mipmap数量
您需要关注纹理的 Mipmap 数量,因为在 Unity 引擎中,纹理的 Mipmap 功能是默认开启的。当一张纹理开启 Mipmap 功能时,它的内存占用一般会上升为原始数据的1.33倍。对于3D模型,其纹理的Mipmap功能是建议开启的,但如果是2D项目或UI界面资源,则建议您将对应纹理的 Mipmap 功能关闭,从而避免不必要的内存开销。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
网格资源
该项主要展示项目运行过程中网格资源的 “资源名称”、“生存周期”、“内存占用”、“数量峰值”、“Vertex数量”、“Triangles数量”、“Normal数量”、“Colors数量” 和 “Tangent数量”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来找 “问题” 资源:
内存占用
内存占用是最需要您关注的一项指标,建议通过 “内存占用” 一列进行资源排序,找出占据最大内存的网格资源,并查看其内存分配是否合理。
Vertex数量 和 Triangles数量
通过该项,您可以查看哪些网格资源的顶点数和三角面片数较多,从而快速对某一特定网格资源进行检测和简化。
Normal数量、Colors数量 和 Triangles数量
一般情况下,这三组顶点属性并不是必须附加在网格模型中的,所以您会看到不少网格模型的数据中并不存在这三组顶点属性。但是,如果您使用的Shader足够复杂,比如需要使用Normal Map,需要进行轮廓线(Outline)或自发光渲染时,这三组顶点属性将会派上用场。所以,Shader的复杂程度决定了其渲染模型所需的顶点属性。 但是,在我们检测过的绝大多数项目中,其项目本身使用的均是较为普通的 Shader,比如 Diffuse,VertexLit 等,但由于 Maya 或 3D Max 导出时的疏忽,导致了FBX模型文件中包含了以上几种属性,从而导致模型资源增加了大量 “多余” 的数据。因此,建议您详细核查拥有此三组属性的网格模型,并判断这些顶点属性是否为渲染必要属性。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
动画资源
该项主要展示项目运行过程中动画资源的 “资源名称”、“生存周期”、“内存占用”、“数量峰值”、“时长” 和 “FrameRate”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来找 “问题” 资源:
内存占用
内存占用是最需要您关注的一项指标,建议通过 “内存占用” 一列进行资源排序,找出占据最大内存的动画资源,并查看其内存分配是否合理。
时长 & FrameRate
时长表示该动画资源的运行时间,FrameRate 表示动画片段的帧率。一般来说,时常越长、帧率越高,动画资源的文件大小和内存占用则越大。对此,建议通过这两项数值来查看动画资源的制作是否合理。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
音频资源
该项主要展示项目运行过程中音频资源的 “资源名称”、“生存周期”、“内存占用”、“数量峰值”、“时长” 和 “Samples”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来找 “问题” 资源:
内存占用
内存占用是最需要您关注的一项指标,建议通过 内存占用 一列进行资源排序,找出占据最大内存的音频资源,并查看其内存分配是否合理。
时长 & Samples
时长表示音频资源的运行时间,Samples 表示音频资源的采样率。一般来说,时常越长,Samples 也会越高,音频资源的文件大小和内存占用则越大。对此,建议通过这两项数值来查看音频资源的时长是否合理。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
材质资源
该项主要展示项目运行过程中材质资源的 “资源名称”、“生存周期”、“内存占用” 和 “数量峰值”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来找“问题”资源:
内存占用
材质资源的内存占用普遍较低,所以,材质资源的内存占用一般并不是该类资源在使用时的主要问题。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
Shader资源
Shader资源的 具体资源使用情况 主要展示项目运行过程中材质资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 和 “硬件支持”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。我们建议您通过以下几个方面来找“问题”资源:
内存占用
Shader资源的内存占用普遍较低,所以,Shader资源的内存占用一般并不是该类资源在使用时的主要问题。
生存周期
生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。该指标主要可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。所谓 “资源泄露”,是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而造成内存占用不断升高,即内存泄露。 一般来说,不同种类的场景(战斗副本场景和主城市场景),其所加载的资源一般是不一致的,所以副本中的大部分资源在切换回主城市场景时均会被卸载。因此,通过 “生存周期” 指标,您将快速查看到哪些资源长期驻留在内存中,并可以快速排查该资源是确实常驻内存的预加载资源,还是存在问题的 泄露资源 。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
Render Texture
该项主要展示项目运行过程中 Render Texture 的 “资源名称”、“生存周期”、“内存占用”、“数量峰值”、“高度”、“宽度”、“格式” 和 “Antialiasing”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其 “资源名称” 在项目中直接进行完善和改进。我们建议您通过以下几个方面来找 “问题” 资源:
内存占用
内存占用是最需要您关注的一项指标,因为在我们深度检测过的大量案例中,Render Texture 的内存占用往往较大。因此,建议您首先通过 内存占用 一列进行排序,找出占据最大内存的 Render Texture,并查看其内存分配是否合理。
格式
格式经常是造成 Render Texture 占据较大内存的主要原因。建议您详细排查 Render Texture 的使用格式,并查看其使用是否合理。关于 Render Texture 的使用格式,具体请看 这里。
高度 和 宽度
Render Texture 的分辨率同样也是造成内存占用过大的主要原因。一般来说,分辨率越高,其内存占用则越大,因此,建议您遵循 “够用就好” 的原则,尽可能避免不必要的内存浪费。
Antialiasing
Antialiasing 是 Render Texture 的反走样程度,该值为(1,2,4,8)中的一个数值,表示的是每个像素的采样点数。这里需要注意的是,该值越大,Render Texture 的内存占用越大。一般情况下,建议将 Antialiasing 设置为 1。
生存周期
生存周期是资源使用中非常重要的一项指标。所谓 “生存周期”,是指该资源在项目运行过程中驻留在内存中的场景数量。该指标可以帮助您查看项目中是否存在 “资源泄露” 等严重问题。“资源泄露” 是指某一资源在切换场景时没有被及时卸载,而被带进了下一场景,从而产生了内存占用不断升高的情况。 一般情况下,不同种类的场景(如战斗副本场景和主城市场景),其所加载的资源是不一致的,因为副本中的大部分资源在切换回主城时均会被卸载出内存。因此,“生存周期” 可以帮您直接查看长期驻留在内存中的资源,快速排查引发内存泄露的具体资源。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
字体资源
字体资源的 具体资源使用情况 主要展示项目运行过程中材质资源的“资源名称”、“生存周期”、“内存占用”、“数量峰值” 和 “硬件支持”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。我们建议您通过以下几个方面来查找“问题”资源:
内存占用
内存占用是需要研发人员关注的一项指标,字体内存往往占据较大的内存占用。因此,建议您首先通过内存占用一列进行资源排序,找出占据最大内存的字体资源,并查看其内存分配是否合理。
生存周期
生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。该指标主要可以帮助您查看项目中是否存在 “冗余资源”。 一般情况下,出现这种问题是由 AssetBundle 资源加载导致的,即在制作 AssetBundle 文件时,部分共享资源(比如 Texture、Mesh 等) 被同时打入到多份不同的 AssetBundle 文件中,从而当加载这些 AssetBundle 时,内存中出现了多份同样的资源,即资源冗余。因此,当资源的数量峰值大于1时,该资源则属于 “疑似冗余资源”,建议您对其进行严格的检测和完善。
所谓 “疑似冗余资源”,是指在检测过程中,我们尝试搜索项目运行时的冗余资源并将其反馈给用户。但是,我们并无法保证该项检测的100%正确性。这是因为,我们判断的标准是根据资源的名称和内存占用而定,当两个资源的名称和内存占用均一致时,我们认为这两个资源可能为同一资源,即其中一个为 “冗余” 资源。但项目中确实也存在资源不同但名称和内存占用相同的情况。因此,我们将通过以上规则提取出的资源归为 “疑似冗余资源”。
粒子系统
粒子系统的具体资源使用情况 主要展示项目运行过程中材质资源的“资源名称”、“生存周期”、“内存占用” 和 “数量峰值”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。我们建议您通过以下几个方面来查找“问题”资源:
内存占用
粒子系统的内存占用普遍较低,所以,其内存占用一般并不是粒子系统在使用时的主要问题。
生存周期
生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。对于粒子系统而言,其本身并没有“冗余度”的说法,因为场景中往往存在大量相同名称、相同内存占用的粒子系统。一般来说,粒子系统在项目运行过程中的使用情况和数量走势是否合理,是需要您时刻关注的事情。
碰撞体
碰撞体的使用情况很大程度上影响着物理系统的CPU开销。一般来说,项目中经常使用的碰撞体类型主要有:Box Collider,Sphere Collider,Capsule Collider 和 Mesh Collider。其中,Mesh Collider的物理计算开销最大。因此,在该部分我们将项目运行过程中所检测到的Mesh Collider进行统计和展示,以帮助您进行对物理碰撞体的使用有更为清晰和直观的掌握。
碰撞体的 具体资源使用情况 主要展示项目运行过程中材质资源的“资源名称”、“生存周期”、“内存占用” 和 “数量峰值”。其中,您可以针对以上每一个属性对资源进行排序,从不同维度上查看存在问题的资源,并通过其“资源名称”在项目中直接进行完善和改进。我们建议您通过以下几个方面来查找“问题”资源:
内存占用
碰撞体的内存占用普遍较低,所以,其内存占用一般并不是碰撞体在使用时的主要问题。
生存周期
生存周期是具体资源情况中非常重要的一项指标。这里的 “生存周期”,是指该资源在项目检测过程中驻留的场景数。
数量峰值
数量峰值同样是资源使用中非常重要的一项指标。所谓 “数量峰值”,是指同一资源在同一帧中出现的最大数量。对于网格碰撞体而言,其本身并没有“冗余度”的说法,因为场景中往往存在大量相同名称、相同内存占用的碰撞体。一般来说,碰撞体在项目运行过程中的使用情况和数量走势是否合理,是需要您时刻关注的事情。
资源使用曲线
您可以选择任何一个资源来查看其随时间的使用情况,直观地了解资源出现 “问题” 时的具体场景和具体信息。
同时,您可以通过与图表进行交互来查看任意时刻的资源数量和内存占用。
指定场景选择
默认情况下,您在本页面看到的是在检测过程中获取到的所有资源情况。但是,您可以通过在图表上进行交互来查看具体某一场景的资源使用情况。具体查看方式如下:
选择您想查看的场景;
点击“查看所选场景资源列表”按钮,即可查看对应场景的资源具体使用情况。
指定帧选择
除上述场景选择功能外,您还可以查看具体某一帧的资源使用情况,具体查看方式如下:
选择您想看的具体帧;
点击“查看所选帧资源列表”按钮,即可查看对应帧的资源具体使用情况。
场景资源比较
资源泄露是目前大多数研发团队经常遇到且又难于解决的问题。究其原因,是因为项目中的资源量过于巨大,泄露资源往往很难定位。因此,我们在页面中提供了资源比较功能,以帮助您快速定位存在“泄露”的资源信息。场景资源比较的具体操作方式如下:
选择您想进行比较的场景(目前,支持且仅支持两个场景的资源进行比较);
点击“选中场景资源比较”按钮,即可查看资源比较结果。
建议您通过以下两种方式进行资源比较,以便您快速找到存在“泄露”问题的资源:
同种类型场景或同一场景进行比较
一般来说,同种场景或同一场景的资源使用应该是较为固定的,比如游戏项目中的主城场景或主界面场景。通过比较不同时刻同一场景的资源信息,可以快速帮您找到其资源使用的差异情况。这样,您只需判断这些“差异”资源的存在是否合理,即可快速判定是否存在资源泄露,已经具体的泄露资源。
不同类型场景进行比较
除一些常驻资源外,不同类型的场景,其资源使用是完全不同的。比如,游戏中主城和战斗副本的资源,除少部分常驻内存的资源外,二者使用的绝大部分资源应该是不一致的。所以,通过比较两种不同类型的场景,您可以直接查看比较结果中的“共同资源”,并判断其是否确实为预先设定好的常驻资源。如果不是,则它很可能是“泄露”资源,需要您进一步查看项目的资源管理是否存在漏洞。
对于资源管理问题,建议您一定慎重对待,不要因为只有几个“泄露”资源就将其忽视,因为您看到的很可能只是冰山一角,如不及时解决,后患无穷。