资源管理也能快如闪电!

简介:

一、优秀的优化方式

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
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
8月前
|
存储 弹性计算 网络协议
Open-TDP 多云资源管理系统介绍
Open-TDP 多云资源管理系统介绍
280 1
Open-TDP 多云资源管理系统介绍
|
Kubernetes 调度 Perl
k8s 【策略】【资源管理】ResourceQuota(2)
k8s 【策略】【资源管理】ResourceQuota(2)
|
存储 Kubernetes 网络协议
k8s 【策略】【资源管理】ResourceQuota(1)
k8s 【策略】【资源管理】ResourceQuota(1)
k8s 【策略】【资源管理】ResourceQuota(1)
|
运维 大数据 BI
集群资源管理系统
**为什么是国际上是亚马逊,国内是阿里这两家公司云计算搞得最好呢**?这两家公司之间有一个巨大的共同点,就是它们都是**电商公司**。电商公司的特点很明显,就是流量不是固定的,往往会受到大促、节日的影响。像是国内的双十一和美国的黑色星期五就是典型的大促。在大促的时候的流量会是平常的十倍甚至更多,这么大的流量必须要有更多的机器去应对。但问题是如果去买这么多机器,但是大促过了,流量下降,那么这些机器就又用不到了,显然就会造成浪费。
|
存储 缓存 负载均衡
2.4.2资源管控层 资源管理技术|学习笔记(二)
快速学习2.4.2资源管控层 资源管理技术
357 0
2.4.2资源管控层 资源管理技术|学习笔记(二)
|
云计算 开发者
2.4.2资源管控层 资源管理技术|学习笔记(一)
快速学习2.4.2资源管控层 资源管理技术
271 0
|
存储 资源调度 Kubernetes
Kubernetes 调度和资源管理 | 学习笔记
快速学习 Kubernetes 调度和资源管理
374 0
Kubernetes 调度和资源管理 | 学习笔记
|
资源调度 容器
OushuDB 管理指南之资源管理
如果OushuDB和YARN配合使用,OushuDB可以从YARN申请资源,并把申请到的资源通过资源管理队列重新在查询之间分配。在不使用资源的时候会把资源动态归还给YARN。 你可以在hawq-site.xml中修改如下配置使之生效。
111 0
OushuDB 管理指南之资源管理
OushuDB 管理指南之资源管理(下)
通常,一个查询的并行度会影响一个查询的性能以及系统的吞吐量。资源管理器分配给一个查询的virtual segment个数决定了一个查询的并行度。 一般情况下,用户不需要人为干预资源管理器对virtaul segment个数的分配,OushuDB资源管理器会很好的管理查询的并行度。但有些时候,用户可能想要控制一个查询的并发度,OushuDB提供了多个 可供用户调控的手段。
151 0
OushuDB  管理指南之资源管理(下)
OushuDB 管理指南之资源管理(中)
在资源队列树中,只有叶子节点可以关联用户接受查询。儿子节点的资源是从父节点中分配出来的。其中一个父节点的所有儿子节点的MEMORY_LIMIT_CLUSTER和 CORE_LIMIT_CLUSTER比例值之和必须小于等于100%。
99 0
OushuDB  管理指南之资源管理(中)