[Unity优化]资源优化之纹理优化
Unity3D引擎处理纹理:不论你导入的是PNG,PSD还是TGA,它们都会被自动转换成Unity自己的Texture2D格式。(美术资源规范:贴图长宽应为4的倍数)
不同平台的图集格式选择方案(TextureImporterFormat):
Android:
RGB Compressed ETC1 4 bits+Alpha(方形)
iOS:
RGB Compressed PVRTC 4 bits+Alpha(方形)
所以图集需要设置为方形。
对于非方形的纹理:
Android:
低画质:RGB Compressed ETC2 4 bits(非透明)/RGBA Compressed ETC2 8 bits(透明)
中画质:RGBA 16 bits
高画质: RGBA 32 bits
ETC2 的格式理论上只在OpenGL ES 3.0 的设备上被支持,而在不被支持的设备上则会内部自动转成 RGBA32/ARGB32的格式,这对于 RGBA Compressed ETC2 8bits 的纹理就是放大了 4 倍。
iOS:
低画质:RGBA 16 bits
高画质: RGBA 32 bits
纹理资源方面的问题除了尺寸外,纹理格式、Mipmap设置和Read&Write功能
格式修改代码:
TextureImporter import = AssetImporter.GetAtPath(path) as TextureImporter;
AssetDatabase.ImportAsset(path);
分离Alpha通道及合并图集两张贴图的Shader可以参考链接。