纹理集的处理

FairyGUI编辑器发布到Unity的资源通常包含一个或多个纹理集,以demo工程为例,这里demo@atlas0.png就是一个纹理集。

纹理集是由UI编辑器自动生成的,但在Unity里可以改变纹理集的属性,常用的设置有:

一般使用Bilinear即可,你也可以在UI编辑器里将图片安排到不同纹理集,然后每个纹理集设置不同的Filter Mode以满足特殊需求。

如果需要消除图像由于采样模式造成的边缘过渡,可以在图片属性对话框设置“重复边缘像素”解决。

如果对内存使用比较敏感,也可以选用压缩格式,即AutoMatic Compressed。在桌面平台上即相同于DXT5,在Android平台上相当于ETC1,在IPhone平台则为PVRTC。这些格式能够大大降低内存占用,也因为它们是显卡直接支持的格式,所以Unity在载入时省去了解码位图的步骤,能够加快载入速度。但它们都是属于有损压缩,在显示质量上肯定不如TrueColor,特别是纹理集颜色十分丰富或者有颜色渐变时,失真会比较厉害。特别重要的是,ETC1是不支持透明通道的,PVRTC对透明通道的支持也比较弱,所以并不适合带透明通道的图集。为此,FairyGUI提供了ETC1/PVRTC+A的解决方案。首先,在发布时勾选“分离Alpha通道”,如下图:

这样,就产生了两个不含透明通道的贴图,一张去除了原图透明通道的贴图,和一张将原贴图透明通道数值转换为等价灰度的贴图。这两张贴图都可以设置为Automatic Compressed。(一定要注意,不能再将主贴图设置为True Color)

FairyGUI提供了特制的着色器处理两张贴图的合并。开发者并不需要编写额外的代码就可以使用这项技术。

你可以将本身就不含透明通道的图片(例如一些大型的背景图)安排到一张纹理集上。如果一张纹理集内的所有图片都不包含透明通道,那么最终输出的图集也不包含透明通道。不含透明通道的图集可以选用Automatic 16bits格式。