资源管理也能快如闪电!

2024-02-21 03:30
文章标签 资源管理 快如闪电

本文主要是介绍资源管理也能快如闪电!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、优秀的优化方式

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

这篇关于资源管理也能快如闪电!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/730434

相关文章

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

理解C++全局对象析构顺序与 IPC 资源管理:避免 coredump

文章目录 0. 概述1. 问题背景2. 问题分析3. 解决方案:手动释放资源4. 深入剖析:为什么手动调用 `reset()` 有效?5. 延伸思考:如何避免全局对象带来的问题?6. 总结 0. 概述 在编写 C++ 程序时,使用全局或静态对象有时可能会导致不可预期的崩溃(如 coredump)。这类崩溃通常源于对象的析构顺序、资源的管理方式,以及底层资源(如 IPC 通道或共

业务资源管理模式语言09

示例: 图13 表示了QuoteTheMaintenance 模式的一个实例,在汽车修理店系统中,其中“Vehicle”扮演“Resource”,“Repair Quotation”扮演“Maintenance Quotation”,“Repair shop branch”扮演“Source-party”,“Customer”扮演“Destiny-Party”。 图13——QuoteThe

Winsock服务器内存资源管理

一般来讲, 在服务器上,如果有足够的资源,Winsock server,理论上可以支持成千的并发连接。而现实是,我们没有足够的资源可供使用,分配。本文主要来讨论一下内存资源之于Winsock server开发的重要性。 一)基本概念。 -> Pages,Locked Pages.         在现代操作系统中,内存管理会把主存(RAM)分成Pages来管理。 Paging(或者swap

Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】

Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】 目录 Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】 一、简单介绍 二、YooAsset  引入工程 三、Sample 案例 Android 端 热更 四、Python

Linux IPC 资源管理:ipcs和 ipcrm使用指南

文章目录 0. 引言1. IPC 资源概述2. 查询 IPC 资源2.1 使用 `ipcs` 查询 IPC 资源2.2 查询特定 IPC 资源2.3 查询系统 IPC 参数 3. 修改 IPC 系统参数4. 清除 IPC 资源5. 实践应用5.1 查询用户的消息队列5.2 查找未被清理的消息队列 0. 引言 进程间通信(IPC)允许不同的进程共享数据或进行同步操作。Linux

《深入理解 C++中的 RAII:资源管理的利器》

在 C++编程中,资源管理一直是一个至关重要的问题。良好的资源管理可以提高程序的稳定性、可靠性和性能。而 C++中的 RAII(Resource Acquisition Is Initialization,资源获取即初始化)技术正是解决资源管理问题的一把利器。那么,RAII 究竟是什么?又该如何实现呢?让我们一起来深入探讨。 一、RAII 的概念 RAII 是一种在 C++中管理资源的编程技术

基于RFID光触发标签的光交箱哑资源管理方案

光交箱作为通信网络的关键节点,其哑资源的有效管理对于保障通信服务的质量和稳定性至关重要。然而,传统的管理方式在面对日益庞大和复杂的光交箱哑资源时,逐渐暴露出诸多问题,如资源信息不准确、故障定位困难、管理效率低下等,在此背景下,结合物联网技术手段,探索创新的管理方案成为当务之急。 一、光交箱哑资源管理的难点与痛点 (一)资源信息不准确 由于光交箱哑资源数量庞大、分布广泛,且大多为无源设备,传统

开源-基于J2EE分布式架构的会议管理系统,支持会议资源管理,预订会议,冲突检测,提醒与签到

自20世纪末至21世纪初,数字化和互联网技术的迅猛发展彻底改变了工作方式和商业模式。企业迅速采用电子邮件、即时通讯和在线会议等数字工具以提升沟通效率。 在信息爆炸的时代,工作中面临的信息量剧增,而企业对效率和生产力的要求也日益提高。有效的会议管理和办公自动化成为缩短周期、减少错误和提升决策质量的关键。云计算的广泛应用和移动设备的普及使得办公软件需要跨平台运行,无缝集成,以便用户能够在各种设备上高