1.ugui纹理格式分析

一、特点

    安卓: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);

      }

  }

}

```

你可能感兴趣的:(1.ugui纹理格式分析)