技术分享连载(五十五)

简介:

资源管理

Q1:我把多个AssetBundle打成一个大包,会出现部分粒子特效贴图丢失的问题。参数设置为CollectDependencies | DeterministicAssetBundle | UncompressedAssetBundle时,贴图是对的,但是脚本、Shader又出错了。由于Unity 4.x下AssetBundle的问题比较多,想知道打大包可行性如何?

在Unity 4.x的版本中我们并不建议将资源打成一个超大的AssetBundle包,一般情况下,单独发布的AssetBundle文件应尽可能小于1MB。这主要是因为Unity 4.x版本中AssetBundle文件压缩格式为LZMA格式,而不是LZ4格式(Unity5.3版本以后推荐格式)。所以,如果一个AssetBundle文件较大,则在加载时很可能会出现较高的WebStream占用,从而造成项目运行时局部时刻内存过高的情况,进而影响运行的稳定性。

同时,需要说明的是,Unity 4.x版本在制作AssetBundle文件时,应尽可能开启CollectDependencies | CompleteAssets | DeterministicAssetBundle选项。如果开启后出现资源丢失,则一般是由于依赖关系所致,相关资源被打包到其他AssetBundle文件中。对此,我们建议在UWA资源检测的结果中,查看所丢失的资源是否存在于AssetBundle中,以及存在具体哪个AssetBundle文件中,从而来进一步解决AssetBundle的打包正确性问题。
请输入图片描述


性能优化

Q2:请问,反复对一个GameObject调用SetActive(true),是否会很耗性能?

频繁SetActive(true/false)会有一定的CPU开销占用。其少量次数并不会带来很高的CPU占用,但是在我们检测过的很多项目中,其每帧都可能存在大量的SetActive调用。究其原因,是因为挂载在GameObject的脚本上,其Update或LateUpdate等函数中每帧都会调用SetActive操作,从而造成了其每帧几十甚至上百次的调用操作。

正因如此,我们在报告中将SetActive的具体GameObject信息、频率和耗时都详细展示出来,以方便大家在几分钟之内,就可以将SetActive调用过量的问题进行修复。
请输入图片描述


资源加载/卸载

Q3:如下图,通过纹理图片通过文件流形式加载到内存,
请输入图片描述
这样的资源还可以使用Resources.UnloadUnusedAssets()和Resources.UnloadAsset(m_Asset)进行资源卸载吗?

如果是自己载入内存并初始化为Unity的Texture2D,则还是要重点查看Texture2D对象的创建方式。一般来说,会用new Texture2D的方式创建,并用LoadImage的接口将一块内存载入,那么这样就要用DestroyImmediate来销毁这个纹理对象了。


动画

Q4:我们有些特效的动画开始是在相机外的 , 动作的裁剪使用的AnimationCullingType.BasedOnRenderers,这样会导致特效之后在相机内也显示不出来了,除了更改如下这个选项还有其他做法么?
请输入图片描述

理论上来说,是不应该出现这种情况的。建议用户可以提交一个具体案例给我们进行研究。同时,研发团队可以通过Unity的Culling Group功能来进行自定义的裁剪操作,该种方式较之动画系统的Culling功能更为灵活。


UI 输入

Q5:发现一个可能是NGUI的Bug:在某些情况下UISprite不显示,或显示的位置不符合localPosition数值Bug。 如: 在UISprite.spriteName不变,对UISprite.gameObject.localPosition或UISprite.gameObject.SetActive设置新值时无效或显示不正确,请问是什么原因?相关例子已经提交给UWA。
请输入图片描述

经UWA检测用户提交的实例,发现代码中存在逻辑问题,下图红框中原先是ItemList,应为ItemNoUse,所以这个不属于NGUI的Bug。

请输入图片描述

PS:在我们与研发团队的交流过程中,我们发现比起大一统的、有规律性的经验总结,更多开发问题都隐于代码背后,这不能仅靠语言描述或者经验推测可以解决,而需要我们深入现场,在代码中挖掘问题的原因。这也是我们UWA真正想帮助大家解决问题的方式。因而,我们强烈欢迎大家就自己的具体问题具体交流。请记得:比起闭门造车,我们更乐意与大家各抒己见,畅所欲言;比起形而上的泛泛而谈,我们更乐意与大家直击痛点,对症下药。





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

目录
相关文章
|
存储 分布式数据库 调度
GitHub典藏版!腾讯T14级牛人亲码的分布式数据库实践,再次爆火
数据库就是要做好五件事,存储、事务、查询、复制和其他。而对分布式数据库来说,不仅要继续做这五件事,还要多出一件事,分片。在这六件事中,存储和其他这两件事与单体数据库差不多,难点就在事务、查询、复制和分片这四件。
|
设计模式 NoSQL Java
直击面试!阿里技术官手码12W字面试小册在Github上爆火
临近金三银四,想必有不少老哥已经在为面试做准备了。大家想必也知道现在面试就是看项目经验+基本技术+个人潜力(也就是值不值得培养)。总之就是每一次面试都是对我们能力的检验(无论是软实力还是硬实力)。软实力其实就是简历包装,自我介绍,与面试官交谈技巧等等;所谓硬实力就是我们所掌握的技术情况了。所以每次面试之前需要做好充分的准备,切不可临时抱佛脚。技术基础打好后,面试前算题巩固也是必不可少的!
GitHub刷屏热议,原来是字节跳动大牛分享数据结构与算法实战笔记
大家都知道,对于程序员来说很大程度上算法就是为了应付面试的。大佬们都说过,学算法之前起码得了解数据结构呀!你是否当程序员这么多年,还只是能手写出个冒泡排序的代码?别怕!我最近正好找到一份字节跳动大牛分享的数据结构与算法实战笔记,在这里分享给大家!
|
人工智能 程序员 Linux
【猿如意】CSDN推出的程序猿开发百宝箱
【猿如意】CSDN推出的程序猿开发百宝箱
227 0
|
监控 前端开发 Cloud Native
第十六届 D2 前端技术论坛完成 6 大专场 21 个话题集结,快来划重点,你一定会有所收获!
一年一度的前端盛会D2前端技术论坛就要来啦,话题集结完成,快来报名学习吧!
1620 0
第十六届 D2 前端技术论坛完成 6 大专场 21 个话题集结,快来划重点,你一定会有所收获!
|
区块链
聚能聊每周精选 第一期
本周聚能聊里各位聊主和各位粉丝们又有哪些精彩互动,碰撞出怎样的火花呢: 什么?你还没有开始用云计算? 被黑为挖矿的阿里云PCDN产品到底是什么,你如何看? 新的一年,新的精彩,2018你有啥计划?........
1742 0
聚能聊每周精选   第一期
|
运维 前端开发 数据可视化
四年,如何从前端小白蜕变为前端技术专家?
作者简介:珑晴——淘系技术部前端技术专家,16 年校招实习转正进入的阿里,当时是在聚划算前端团队,随着业务变化一路从聚划算到天猫至今加入淘系技术部,负责日常活动营销的同时,也多次参与大促会场&互动的研发,在支持业务的过程中不断挖掘提炼创新,最终完成从前端小白到前端技术专家的蜕变。
7363 0
四年,如何从前端小白蜕变为前端技术专家?
|
云安全 机器学习/深度学习 城市大脑
嘘!偷偷看下阿里技术大牛的私人书单
阿里妹拿到了贾扬清、吴翰清等大神的私人书单,到底大神们如何跨界学习,将知识收为己用?一起来感受!不要错过文末的送书福利哦!
10916 0
嘘!偷偷看下阿里技术大牛的私人书单
|
程序员 C++
聚能聊每周精选 第三期
本周聚能聊里各位聊主和各位粉丝们又有哪些精彩互动,碰撞出怎样的火花呢:2018聚能聊聊主招募启动. 有“一个女程序媛征男友的需求说明书”等你的回复. 春运抢票大战打响,您抢到回家的票了吗?
1854 0
聚能聊每周精选 第三期
|
机器学习/深度学习 人工智能 语音技术
聚能聊每周精选<第一期>
本周热议,达摩院黑科技首次亮相,语音让生活变的更简单!AIOPS是什么,它的未来如何?工业的顶级化发展就是人工智能,人工智能在工业界的落地又如何呢?TensorFlow你了解多少,一起来聊聊吧!
2402 0
聚能聊每周精选<第一期>