
1.2.10 Unity中特殊纹理贴图的使用
在实际项目制作中,除了每个材质球使用“单独纹理”这种常规情况外,还会有其他几种特殊情况。
以下为三种特殊贴图类型示例。
第一种:序列纹理,如图1-100所示。

图1-100
纹理特点:纹理按照规律先后排列,使用时需要按照顺序依次播放。
以粒子系统为例,希望每个粒子依照纹理排序依次播放,操作如下。
Step 01首先创建一个粒子系统,将Start Speed(初始速度)设置为0,取消发射器形状,设置合适的Start Lifetime(粒子初始寿命),设置粒子发射速率Rate为0,开启Bursts(爆发),第0秒发射一个粒子,设置如图1-101所示。

图1-101
Step 02然后开启Texture Sheet Animation(纹理动画模块)功能,根据贴图排布来设置Tiles(平铺分布)数值即可。
以下为示例贴图,如图1-102所示。

图1-102
Step 03观察发现X轴方向纹理排布数量为5,Y轴方向纹理排布数量为2,将数值输入Tiles(平铺分布)中,如图1-103所示。

图1-103
设置完成后,单击粒子系统进行播放就可以查看效果了。
注意
(1)读者可以在1.3节中学习有关粒子系统的基础知识,包括Tiles(平铺分布)排列数值的设置方法等。
(2)如果读者想进一步对序列图的播放速率进行控制,可以在其属性Frame over Time(时间帧)中通过修改动画曲线调节。
(3)在之后的脚本篇中会学习使用脚本播放序列图的方法。
第二种:规则纹理(随机调用某个纹理),如图1-104所示。

图1-104
纹理特点:纹理按照规律排列,使用时需要随机调用集合中的某个纹理(不需要按顺序播放)。
以骨骼飞出的粒子效果为例(希望每个粒子随机播放四个骨骼纹理之一):
Step 01首先创建一个粒子系统,赋予其相应贴图(操作不再重复)。
Step 02然后开启Texture Sheet Animation(纹理动画模块)功能,根据贴图排布来设置Tiles(平铺分布)数值,贴图及选项设置如图1-105所示。

图1-105
播放发现与上一案例(序列播放)效果相同,那么要如何让它停止序列播放并让每个粒子随机选取四个纹理之一呢?
Step 03将Texture Sheet Animation(纹理动画模块)选项中的Frame over Time(时间帧)设置为Random Between Two Constants(两个数值之间取随机值),如图1-106所示。

图1-106
Step 04然后设置数值为“0”~“4”,如图1-107所示。

图1-107
Step 05再次播放,发现粒子已经随机发射集合之中的纹理了,并且不再序列播放。
第三种:不规则纹理,如图1-108所示。

图1-108
纹理特点:纹理排布及数量不规则,使用时调用指定纹理。
在制作特效时,为了减少贴图以及材质球数量,有时会将多张不同尺寸的贴图纹理合并到同一图像之中。
以图1-109为例。

图1-109
当前图像由五张纹理共同组合而成,像素尺寸大小为512×512,各纹理分布尺寸如图1-110所示。

图1-110
提示
拼合贴图的制作方法:由于游戏特效中的每张贴图边长都是“2的n次方”(很规则),所以只需要在Photoshop中新建画布(边长也需要是“2的n次方”),再使用“切片选择工具”进行拼合即可。
Step 01首先创建一个材质球并赋予贴图纹理,如图1-111所示。

图1-111
Step 02可以看到当前材质球的Tiling(排布数量)默认为X=1、Y=1。接着创建一个Plane(平面),然后将材质球赋予平面对象,如图1-112所示。

图1-112
Step 03现在可以通过修改材质球中的Tiling(排布数量)和Offset(偏移值)来适配当前纹理,例如,将材质球的Tiling(排布数量)设置为X=0.5、Y=0.5,如图1-113所示。

图1-113
Step 04观察发现修改后的纹理显示如图1-114所示。

图1-114
那么这些数值在设置时有哪些规律呢?
通过调节Tiling(排布数量)和Offset(偏移值),可以切换到任意纹理位置。
如图1-115所示,为Tiling(排布数量)/Offset(偏移值)排布数值计算公式。

图1-115
例如,当前希望调用纹理集合中的右下角纹理,如图1-116所示,黄框位置像素尺寸为256×128。

图1-116
接下来将纹理信息带入公式,如下所示。
Tiling(排布数量):X=(256/512),Y=(128/512)。
Offset(偏移值):X=(256/512)×(2-1),Y=(128/512)×(1-1)。
注意
该纹理横向排序(由左至右)为2、纵向排序(由下向上)为1。
设置材质球相应数值界面及最后结果显示如图1-117所示。

图1-117
注意
(1)该方法不但适用于模型体,同样也适用于粒子系统。
(2)除了使用该方法外,利用粒子系统内置功能Texture Sheet Animation(纹理动画模块)也能达到相同目的。
纹理排布高级运用小技巧:
通过对以上案例的学习,相信读者已经初步掌握了不规则纹理的使用方法。那么现在就开始尝试使用一些复杂的纹理吧。
以下图为例(像素尺寸512×512),当前希望使用图像中黄框内的纹理图案,如图1-118所示。

图1-118
首先对图像进行等比分割(目的是为了观察纹理尺寸,可以通过使用Photoshop中的“切片选择工具”进行快速划分),如图1-119所示。

图1-119
划分后观察黄框内纹理比例,得到其像素尺寸为64×64。按照图1-120的公式得到Tiling(排布数量)与Offset(偏移值)数值。

图1-120
Tiling(排布数量):X=(64/512),Y=(64/512)。
Offset(偏移值):X=(64/512)×(4 - 1),Y=(64/512)×(4-1)。
在材质球中输入相应数值后,结果显示如图1-121所示。

图1-121
现在就已经得到黄框内的纹理图案了。