天天看点

《Unity开发实战》——3.9节鼠标悬停时高亮显示材质

本节书摘来自华章社区《unity开发实战》一书中的第3章,第3.9节鼠标悬停时高亮显示材质,作者 (爱尔兰)matt smith (巴西)chico queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.9 鼠标悬停时高亮显示材质

高亮对象是让玩家知道这个对象可以交互的最有效的方式。在拼图游戏和点击式冒险游戏中很有用,3d用户界面中也可以用。

3.9.1 准备工作

本节中需要一个 3d 模型和一个 2d 纹理贴图,也可以直接导入0423_03_08文件夹中名为highlight的包。

3.9.2 操作步骤

请按照下面的步骤实现鼠标悬停时高亮材质:

1)导入包,并打开highlightscene 场景。

2)在hierarchy 视图中,选择 3d 对象让其高亮(名为highlightcube)。

3)在 inspector 视图中,应该会显示这个对象的材质,使用shader的下拉菜单把值从diffuse修改成vertexlit。

4)把basebox 纹理应用到材质的base纹理。

5)注意 vertexlit 着色器有一个属性叫做emissive color,默认是black。如果想预览其变化,可以修改成green(但要记得改回来)。

6)在project视图中,通过下拉菜单创建一个c#脚本,命名为highlightobject 然后打开。

7)替换成下面的代码:

《Unity开发实战》——3.9节鼠标悬停时高亮显示材质
《Unity开发实战》——3.9节鼠标悬停时高亮显示材质

10)通过component | physics | box collider 添加一个盒子碰撞器(box collider )到 highlightcube对象上。

11)测试场景。盒子应该会在鼠标悬停时高亮(点击时更亮)。

3.9.3 实现原理

box collider 通过盒子探测鼠标指针,像改变发光色值的触发器一样工作。mouseon 布尔变量用于探测鼠标按钮在box collider上是否松开,并相应地修改其颜色。

3.9.4 更多内容

可以用其他shaders实现更多有意思的东西,但是一定要修改特定的材质属性。

高亮自发光着色器

如果在脚本中把_emission 替换成 _color自发光着色器就会工作了。

使用透明着色器

透明着色器(transparent shaders)也是一个有意思的东西。可以通过修改main color的alpha值而达到修改透明度的目的(应该在脚本中的_color相关的代码中)。

继续阅读