一、特点
安卓:ETC1>ETC2>RGB16>RGB32
TEC1内存大小: 1024 X 1024 X 0.5= 0.5M;不带透明通道优先使用
ETC2内存大小:1024 X 1024 X 1= 1M;带透明通道使用
ETC1、ETC2 长宽没要求,但必须被4整除,ETC2只支持OpenGL ES 3.0以上的Android手机(大概2013年以后的手机都支持)
IOS:PVRTC>ASTC>RGB16>RGB32
PVRTC内存大小:1024 X 1024 X 0.5= 0.5M 压缩的效果是比较差的,尤其是有透明通道的UI几乎是无法接受的。
ASTC 4*4内存大小:1024 X 1024 X 1= 1M 不带透明通道可以使用ASTC 5X5(表示每个压缩块的大小是5 X 5=25),带透明通道可以使用 ASTC 4X4(表示每个压缩块的大小是4 X 4=16)
PVRTC压缩格式要求图片的宽高必须相等并且是2的整数次幂,ASTC 长宽没要求,但必须被4整除,还得A8以上的设备
RGBA32 内存大小 1024 X 1024 X 4 = 4M ,RGBA16 内存大小 1024 X 1024 X 2= 2M,质量无法达到要求可以提升使用以上2种
说明:
针对Android平台Unity还实现了一套Crunched(紧缩)压缩方式,比如RGBA Crunched ETC2,先ETC2先压缩,然后在Crunched压缩,运行时在额外解压缩,所以大小更下,加载更快。
IOS自动设置压缩格式无法灵活满足需求,需要勾选Override for Ios,手动设置。附加编辑器脚本,方便快速修改
```
Using UnityEditor;
public class TextureImport : AssetPostprocessor
{
void OnPreprocessTexture()
{
if (assetPath.Contains("Assets"))
{
TextureImporter textureImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
TextureImporterPlatformSettings settings = new TextureImporterPlatformSettings();
settings.overridden = true;
settings.name = "iPhone";
settings.format = TextureImporterFormat.ASTC_RGBA_4x4;
textureImporter.SetPlatformTextureSettings(settings);
}
}
}
```