技术分享连载(五十五)-阿里云开发者社区

开发者社区> 人工智能> 正文

技术分享连载(五十五)

简介:

资源管理

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章