游戏包体太大,内存不足?Unity贴图压缩注意这几点

编者按:在游戏开发中,有些事看似不起眼,实际上却影响很大,比如游戏资源的压缩,会影响到最终包体的大小,而包体过大可能会让手机内存小的玩家无法下载。在本文中,作者vian分析了Unity贴图压缩需要注意的地方,希望对大家有所帮助。

01 为什么要做贴图压缩?

在Unity下,为降低DC,通常都会做打包图集处理。我们基本用的一种是TexturePacker,还有就是使用UGUI下,Unity用的设置Packing Tag自带的图集打包。那么,这些图集到底占多大内存?都有哪些压缩方式呢?

接下来看一组Texture的预览(PC platform):
 


以上RGBA32压缩格式带透明通道,内存占用情况:

2048*2048的贴图占(2048*2048*4)/1024/1024=16MB

1024*1024的贴图占(1024*1024*4)/1024/1024=4MB

以上RGB24压缩格式带透明通道,内存占用情况:

1024*1024的贴图占(1024*1024*3)/1024/1024=3MB

512*1024的贴图占(512*1024*3)/1024/1024=1.5MB

为啥要做贴图压缩呢?最基本就是包体与内存占用两方面。

02 压缩格式

如上面提到的RGBA32和RGB24。
 


在编包的时候我们可根据安卓或苹果平台去设置相应压缩格式。
 


另外各种压缩格式列表可见:
 


我们目前项目里PC下,不带透明通道的选的RGB24,带透明通道选的RGBA32。

安卓选用的ETC2_RGBA8压缩格式,安卓4.3以下系统不支持。卖手游平台一些不带透明通道如战斗大背景图等选用ETC_RGB4压缩格式,另外还一些不带透明通的图标等选用ETC2_RGB4压缩格式。

苹果选用的ASTC_RGBA(6*6),需要注意的是要A8处理器的才支持,iPhone5s、iPad mini2、ipadAir不支持。

03 ASTC里2D block footprints and bit rates
 


以上是block4X4-12X12之间的每像素的bit rate值。选用的Block越大压缩越大。

04 一些压缩格式内存参考比对



 


上面ETC_RGB4、ETC2_RGB4压缩占内存大小一样,但对于不带透明通道的贴图ETC格式画质较好ETC2画质中。可解释我们战斗大背景用的ETC压缩格式,图标等选用的ETC2。

那么一张512*512带透明通道贴图,它们可怎么估算?

在苹果ASTC_RGBA(6*6)格式下约占多大内存?

(512*512*3.56/8)/1024=114KB

(1024*1024*3.56/8)/1024=455.7KB(有偏差,上面展示456.9KB?)

在安卓ETC2_RGBA8压缩格式下占多大内存?

(512*512*(8/8))/1024=256KB

(1024*1024*(8/8))/1024=1024KB

假如某战斗里的角色按2张1024*1024贴图,一场3V3战斗最多按24个角色算,技能等除外,在苹果ASTC_RGBA(6*6)格式下占多大内存?

24*2*((1024*1024*3.56/8)/1024/1024)=21.4MB

在安卓ETC2_RGBA8压缩格式下占多大内存?

24*2*((1024*1024*(8/8))/1024/1024)=48MB

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值