且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Unity开发实战》——3.8节通过GUI实时组合纹理

更新时间:2022-01-25 07:51:59

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.8节通过GUI实时组合纹理,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.8 通过GUI实时组合纹理
avatar的自定义往往包括选择一个或多个纹理来定义外观。本节中将实现一个GUI,此GUI通过组合两个纹理通道让玩家创建自己的avatar。

3.8.1 准备工作
本节需要的3D对象和图片文件在0423_03_07 文件夹的selectTexture 包中。

3.8.2 操作步骤
请按照下面的步骤叠加纹理:
1)把为名selectTexture 的包导入到项目中。
2)打开名为 selTextScene的场景。
3)创建基础纹理:在Project 视图中,用下拉菜单创建一个材质,命名为selectable-Material。
4)把selectableMaterial材质的Shader 选项修改成 Decal。然后把名为 face1 和prop1的纹理贴图作为 Decal 的贴图,如下图所示:


《Unity开发实战》——3.8节通过GUI实时组合纹理


《Unity开发实战》——3.8节通过GUI实时组合纹理

8)保存脚本,并附加到Avatar 游戏对象上。
9)在Inspector 视图中,把 Faces 和 Props的Size 值都修改成 2。
10)把Faces的 Element 0 和 Element 1 分别修改成face1 和 face2。Props的Element 0 和 Element 1 也做同样的操作 (修改成prop1和prop2):


《Unity开发实战》——3.8节通过GUI实时组合纹理

11)播放场景,可以通过点击按钮选择组合的纹理:

3.8.3 实现原理
脚本让用户创建两组纹理:一个作为基础纹理(名为Faces),另一个作为Decal Map(贴图)(名为Props)。当场景播放时,纹理显示在GUI的按钮中,此按钮通过调用ChangeMaterial函数修改Avatar材质中的纹理。ChangeMaterial函数的参数接收分类(Face 或 Prop)和图片的索引,然后把相应的纹理贴图指定到纹理通道。

3.8.4 更多内容
本节简单地修改了不同的材质着色器的参数。可以查看Unity在线文档学习更多关于其他纹理的知识: http://unity3d.com/support/documentation/ScriptReference/Material.Set-Texture.html。另外,如果想学习shaders,可以查看文档: http://unity3d.com/support/resources/ assets/built-in-shaders。