默认情况下当你把图片导入到unity中时,unity会自动把图片转换成最适合当前平台的压缩格式。如果你有一些特殊的需求,unity也提供了覆盖默认压缩格式的方法,如下图
在图片的Inspector窗口可以选择相应平台然后重写图片的压缩方式。
下图展示了不同平台可以使用的贴图格式
在项目的开发中会根据不同需求来调整贴图的压缩方式。对于大部分贴图资源,使用默认的压缩格式即可。如果一些UI需要特别高的清晰度可以使用RGBA32/RGB24,看起来和原图一样。在安卓平台ETC2 是unity在官方文档中推荐的方式,支持alpha通道,在内存占用和贴图质量上提供了最好的平衡,并且可以适应大部分安卓手机。但如果项目要考虑某些低端机型(如红米的部分机型),还是要使用ETC1。
在IOS平台,默认的压缩格式是RGBA Compressed PVRTC 4 / RGB Compressed PVRTC 4。但RGBA的图片压缩后的效果看起来要比RGB的图片效果差很多,所以通常的解决办法是将带alpha通道的贴图分成两个不带通道的贴图,一张储存颜色信息,另一张存alpha值,和在安卓平台中使用ETC1时拆分RGBA贴图的处理方式一样。下图展示了原图和在IOS平台中压缩为RGBA Compressed PVRTC 4后的效果,可以看到图片糊了很多。
另外贴图的宽高要是2的次方,因为只有这样的图片unity才可以将其压缩为ECT或PVRTC4格式,这类格式的图片在内存中无需解压,可以直接被GPC支持,占用内存少,效率还高。对于IOS平台不仅需要宽高是2的次方,还要求宽高要相等。
所以最后结论是:
Android:如果对贴图质量要求高比如某些UI,使用RGBA32/RGB32。如果对质量无特殊要求而且目标机型是中高端机型,使用ETC2。如果是全机型通用,使用ECT1拆分alpha通道的方式。
IOS:如果对贴图质量要求高比如某些UI,使用RGBA32/RGB32。如果对质量无特殊要求,使用RGB Compressed PVRTC 4拆分alpha通道的方式。
压缩质量:仅比较RGB这三个通道的质量,RGBA32 > RBG16 > RGBA16 > RGB PVRTC4/ETC4 > RGB PVRTC2