技术分享连载(四十)

简介:

资源管理

Q1:我们有了解到,卸载AssetBundle后, 从这个AB读出资源的Instance ID和guid的映射关系会被删除。在我们的项目中, 优化策略是这样的: 进场景时, 预加载Prefab,并创建一些对象实例缓存,然后会把AB删掉。因为我们发现在Android机器上, AB占的内存很大, 如果其中纹理(A)的Instance ID被认为失效,它和guid的映射没有了,如果某个时刻,缓存池不够用,需要从Prefab创建一个新的实例,这个Prefab会引用到A,资源管理器发现这个A的guid并没有对应的实例ID, 这时会导致重新从磁盘上加载资源A,请问这样理解对吗?

Instance ID和"guid"(类似Editor中的guid,但本质上不是)的映射是在发生加载操作时才需要的,如果一个Prefab需要的资源都已经加载好了(通常第一次实例化就都加载好了),那么后续的多次实例化都是不需要那层映射关系了的。所以理论上这种情况下卸载AB是没问题的。另外,Unity是不会自动"从磁盘上重新加载A"的,对于AB中加载出来的资源,"磁盘"就是指内存中的ab文件,如果AB已经卸载了,那么重新加载的结果就是资源丢失。发生冗余的前提是,这个AB又被手动加载进内存。


资源管理

Q2:UWA的测评报告上说“蒙皮网格(Skinned Mesh)数量过高”,我们游戏内很多模型动画用的是这个,是美术还可以用其他的方式做动画吗?

http://blog.uwa4d.com/archives/Simple_PA_Animation.html

随着研发项目越来越重点,蒙皮网格数量必然会越来越多。报告中“蒙皮网格过量”仅是一个提醒,它在性能方面最主要的影响其实是MeshSkinning.Update和Animation.Update/Animator.Update,建议这个研发团队在看到“蒙皮网格数量过多”提醒时,重点看一下动画系统性能页面中的CPU耗时是否较高。如果较高,则建议根据我们动画模块优化Blog中的建议去完善项目动画模块即可。


资源管理

Q3:能否推荐一些动画剧情的插件?

我们推荐Asset Store中的uSequencer插件。具体的相关文章可参见:
1)Usequencer 初识
2)Usequencer 准确显示瞬时事件&持续事件


动画

Q4:我在Profiler中看到Animator.Initialize这个耗时很大,这个有什么建议么?Animator.Instance 是因为Animator过多造成的吗?

由图中可知,Animator.Initialize主要是在Instantiate实例化时引起(实际上,GameObject.Active操作也会引起Animator.Initialize),而其具体的耗时原因是相关资源(主要是AnimationClip资源)的加载所致。因此,我们的建议如下:
(1)对GameObject的Instantiate实例化操作进行检测,对于频繁Instantiate的GameObject尝试进行缓存;
(2)对Animator Controller中的AnimationClip资源进行精简,可尝试动态加载和替换Animator Controller中的AnimationClip;
(3)由(1)引申出来,对于已经在缓存池中通过GameObject.Active操作造成的Animator.Initialize开销,建议通过Active/Deactive Animator组件来代替Active/Deactive GameObject,这种操作可以避免Animator.Initialize时内部组织结构创建的开销,进而降低Animator.Initialize时的CPU开销。
0.png


资源管理

Q5:请教一下,为什么NGUI的Atlas通过AssetBudle载入之后,使用Resources.UnloadUnusedAssets()不能够释放呢?分析器里面引用是1,但是又找不到哪里引用了。

如果Unity Profiler中看到了资源的引用计数不为0,则说明该Atlas资源还在被索引,这样使用Resources.UnloadUnusedAssets()是无法进行卸载的。只有将其索引消除,该资源才会被认为是UnUsed资源,这样才能被Resources.UnloadUnusedAssets()卸载。该资源的引用计数不为0的原因可能有以下几种:

(1)它被缓存在某些Container中,即它从AssetBundle或Resources中加载后,被直接缓存到某个容器中,从而产生了索引,只要它没有被清除出容器,那么索引将一直存在;

(2)它被其他Material、Prefab等索引,而这些资源被缓存在某些容器中,即间接被容器缓存,只要索引它的资源不被清楚,那么它的索引页将一直存在。

就目前我们遇到的泄露问题来看,上述两点为最为主要的原因。因此,如果你的项目中也存在类似情况,建议首先以此为基础对容器的使用进行排查。





原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
5月前
掌握这 3 个诀窍,你也能成为一个技术大牛
掌握这 3 个诀窍,你也能成为一个技术大牛
|
信息无障碍
阿里公益孙利军和盲人按摩师聊了聊
前几天,阿里巴巴公益基金会理事长孙利军和北京盲人按摩师何亚君,一起在线上聊了聊天。他们都聊了些什么呢?以下是聊天实录,小益来分享给大家。
137 0
阿里公益孙利军和盲人按摩师聊了聊
|
监控 前端开发 架构师
这一天,InfoQ 办公室为何如此热闹?|带你直击 InfoQ 开放日精彩瞬间!
过去一年,InfoQ 秉承着“推动数字人才全面发展”的使命,持续关注技术领域的变化和用户的需求,为近 500w 用户提供了好产品、好内容、好服务;新的一年,为了能更深入地了解企业、开发者以及用户的真实诉求,我们将以每月一次的节奏,与 InfoQ 的朋友们进行近距离交流。
348 0
这一天,InfoQ 办公室为何如此热闹?|带你直击 InfoQ 开放日精彩瞬间!
|
监控 DataWorks 前端开发
第十六届 D2 的第一波话题新鲜出炉啦~干货满满,不容错过!
上上个周末,有 7 位前端大佬们放弃了宝贵的休息时间,以评委的身份从白天专注到黑夜,只为给本届 D2 挑选出最优质的话题。 评委们不仅给出了前端方面的专业见解,还都秉承着一个最基本却也最核心的原则——必须能给 D2 的听众带去收益,而这,也是 D2 十几年如一日都在坚持的事情。 经过两天的精心挑选,我们激动地向大家宣布:首批 12 个话题诞生啦!我们按照专场来看看都有哪些吧~
577 0
第十六届 D2 的第一波话题新鲜出炉啦~干货满满,不容错过!
|
消息中间件 边缘计算 Cloud Native
议题剧透|欢迎围观 2021 阿里云开发者大会神仙打架现场
数字时代,创新的时代。万千开发者汇聚智慧,启迪梦想,不断推动创新发生。
议题剧透|欢迎围观 2021 阿里云开发者大会神仙打架现场
|
算法 安全 程序员
阿里云秋招宣讲会师兄师姐面经干货续集《算法&研发专场》来啦
上周,《阿里云校招宣讲会:前端&设计专场》已顺利结束啦,小伙伴们通过内推投简历了没有呢?听了师兄师姐的校招经验干货分享之后是不是胸有成竹地在等待面试通知了呢?来来来,阿里妹陪你一起梳理师兄师姐们分享的干货要点~
2676 0
阿里云秋招宣讲会师兄师姐面经干货续集《算法&研发专场》来啦
|
前端开发 JavaScript Java
全栈新兵成长记,附赠校招三大锦囊
十余载寒窗,一朝迈入社会,翘首以盼中结束的学生生涯往往也是纠结的开始:目光转向同学斩获的各种offer,两手空空的不甘与无奈谁人能懂;带着欢快的心情走向工作岗位,竞争的激烈却让自己处处碰壁。在云栖社区与云翼计划联合主办的《首届互联网新兵进阶在线峰会》上,阿里云前端开发工程师行剑介绍了自己在校园技术类社团成长和活动的经历,并给校招中的同学提供了三个必备锦囊。
9147 0
|
程序员 UED 内存技术
【聚能聊有奖话题】你有经历过程序员与美工的撕逼大战吗?
就像猫和狗、该隐和亚伯一样,程序员和美工也是对死对头。程序员和美工就像来自不同星球的两种完全不同的人,他们脑袋所关心的事情也完全不同。 程序员希望网站运行起来高效无BUG,而美工希望网站看起来漂亮。
1676 0
技术新丁战阿里,写给那些对阿里感兴趣的学弟学妹
作者介绍:仲泽,一个山东帅小伙,至今单身,性格温顺,为人诚恳(Ps:我们这个真不是相亲贴),在阿里刚刚度过了从学生到职员身份转变的适应期。在这里将走出校园的迷茫、焦虑,新工作中的陌生、新奇,以及自己的收获成长与大家分享。   转眼间,来阿里快三个月了,接触了很多的东西,见了很多的人,突然从学校
4821 0