[性能优化]资源优化之纹理优化

Aug 27, 2017


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可以参考 链接