要改善这一状况实际上很简单。
造成这样的原因,是Unity在导入图片(或者纹理)时会自动进行压缩,以便减少运行时游戏的内存占用率,提供性能。
注意: 下面实例使用的Unity版本为4.3.4。版本不同的话可能某些显示不完全相同,但关键点是一样的。
实现
我们以下列背景图为例(大小为2048*640):
当我们把它作为背景显示时,在Game界面会看到下面的效果:
可以发现,上面的画质不怎么尽如人意,例如左上角的帆船和右上角的皮球,有明显的模糊和锯齿。
观察该图片对应的Inspector面板(注意这里的纹理类型是Sprite),如下所示:
其中对画质有影响的部分,已经用红框圈出。根据 官网文档的解释 ,其含义分别如下:
如果我们把Filter Mode改为Point,可以看到画面明显变得锐化了。仔细观察图像中每个物体的边缘,由原来的模糊变为块状化了。但画质依然不好,可以看出有明显的锯齿。
我们将 Filter Mode重新置回 Bilinear 。 前面提到原图的大小为2048*640,而默认支持的Max Size是1024,这意味着Unity自动压缩了图片。我们把 Max Size改为2048,并点击Apply后,可以看到画质得到了明显改善,锯齿和模糊都有了变化:
而此时的内存占用也提高到了0.6MB,比之前大了很多:
最后,我们尝试把Format调整为Truecolor。得到效果如下:
可以看出来,画质变化不大。但是内存占用却又提高了很多(3.8MB):
至此,我们可以认为适合该纹理的设置为 Filter Mode为 Bilinear , Max Size为2048, Format为 Compressed 。
Filter Mode 当该纹理由于3D变换进行拉伸时,它将如何被过滤插值。共有三种选择:
Format 该纹理使用的内部表现格式。这是在大小和质量之间的权衡。共有三种格式:
结束语
上述得到的结果是适合例子中的图片。在实际应用中,不同的图片要得到最好的效果设置可能不一样。下面是几点提示:
我们可以为不同的平台设置不同的 Max Size和 Format。例如,在Android平台上,由于性能不如IOS,可以选择较低的画质,而在IOS平台上可以设置为最高画质。