学习
实践
活动
工具
TVP
写文章

Unity技术分享67-资源泄露、ETC压缩、动画文件浮点数精度

我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。

资源管理

Q1:使用AssetBundle.Unload(true)释放AnimationClip , 但发现AnimationClip在Profiler看到还存在,请问要怎样才释放干净呢?

如果这个AnimaitonClip是从AssetBundle中加载过来的,那么当这个AssetBundle调用unload(true)时,该AnimationClip理论上是会被强行卸载的。如果Profiler中查看还有,那么只有两种情况:

(1)仍然存在的AnimationClip是从其他地方加载来的,而不是来自于该卸载的AssetBundle;

(2)Unity引擎的Bug,这种概率不是没有,但很小。

此问答来自于UWA 问答社区:

https://answer.uwa4d.com/question/5937adc70ded23f1039c67ff

如您对该问题仍有疑问,可以转至社区进行进一步交流。

资源管理

Q2:如何处理ETC压缩完图片质量模糊和ARGB32内存占用太大这种关系?

研发团队可以从参考以下几个方法:

1)使用ETC压缩的图片尽量减少过渡,这是美术制作时需要注意的,很多情况下并不需要明显的过渡,只是需要半透明而已;

2)当然,有部分过渡色是必须的,这时候就要把相关小图整合到一张RGBA32的图片上;

3)在资源管理上入手。一般情况下,我们是允许部分资源使用RGBA32,但是要注意,及时卸载掉不使用的资源,以保证内存峰值在可控范围内。

感谢UWA 问答社区的郑骁提供了以上回答。

在我们团队里面有一个意识,品质高和性能好有些时候是一对矛盾,有些情况要无损压缩是很难做到的。我们目前如果ETC压> 缩效果不好的,会使用RGBA32并降一个尺寸规格来压缩,这样虽然图片会模糊点,但是过渡还是平滑的。

感谢UWA 问答社区的邓永健提供了以上回答。

此问答来自于UWA 问答社区:

https://answer.uwa4d.com/question/593629f27780cfc82fa5f867

资源管理

Q3:如何降低动画文件的浮点数精度?之前UWA给过思路,但具体怎么个执行方法?

动画文件后处理可以做两件事,1)精度压缩,2)scale曲线剔除。比起用工具修改原始fbx文件,这样比较灵活。

实际测试,在开启Optimal压缩的情况下,加上这个后处理,能再节省40%左右。

此问答来自于UWA 问答社区:

https://answer.uwa4d.com/question/593955b6c42dc04f4d8f7341

感谢UWA 问答社区的WangLiang提供了以上回答。

内存管理

Q4:请问一下iOS平台打出来的带Profiler的包,在XCode里看内存运行期间涨了近60MB,Profile里面看ReservedTotal只涨了10MB,这个是为什么呢?测了很多次,都是xcode内存涨很多,但是资源看不到太大的变化,最后游戏可能会崩溃,求解?

这说明iOS内存的提升绝大部分并不是由Unity引擎所造成的,一般来说,系统库会占用一定的内存,但如果内存持续上升直至崩溃,那么建议研发团队从所用第三方库(比如Lua、Native插件等)入手,检测其是否存在内存泄露风险。

资源管理

Q5:UWA报告中的资源是否是实时的?我看给的是原始格式,不是压缩后的内存数值。

ASTC格式并不是所有机型都支持,在Android端只有配有高端Mali芯片的机器才支持,对于不支持的,引擎会将其解压成RGBA32进行处理,所以图片中的内存值过大,很可能是项目在不支持ASTC格式的设备上所看到的结果。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180301A0EBA800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券