《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)替换成下面的代码:


7322c1f45cf4c9175efd08226f32bf26ab5adbc8


20cd837646226858a0f1834ec5d6ed0e18bca1ab

10)通过Component | Physics | Box Collider 添加一个盒子碰撞器(box collider )到 highlightCube对象上。
11)测试场景。盒子应该会在鼠标悬停时高亮(点击时更亮)。

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

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

  1. 高亮自发光着色器
    如果在脚本中把_Emission 替换成 _Color自发光着色器就会工作了。
  2. 使用透明着色器
    透明着色器(Transparent shaders)也是一个有意思的东西。可以通过修改main color的Alpha值而达到修改透明度的目的(应该在脚本中的_Color相关的代码中)。
相关文章
|
10天前
|
图形学 开发者
unity 获取鼠标跟键盘
在 Unity 中,鼠标和键盘输入的获取依赖于底层操作系统的输入系统。操作系统捕获硬件事件(如鼠标的移动、点击及键盘按键),并将其转化为输入事件。Unity 通过 Input 类封装这些事件,使开发者能便捷地访问鼠标和键盘数据。例如,`Input.GetAxis` 方法用于获取鼠标滚轮、X/Y 轴移动及键盘方向键的输入,简化了开发流程。 代码示例展示了如何使用 `Input.GetAxis` 获取鼠标滚轮、左右和上下移动,以及键盘的方向键输入,并根据这些输入进行相应的处理和物体移动。
|
10天前
|
图形学
unity判断鼠标在不在UI上
在 Unity 中,判断鼠标是否在 UI 上主要依赖事件系统和射线检测机制。Unity 的事件系统负责处理输入事件,GraphicRaycaster 组件用于检测射线与 UI 元素的相交情况。通过 `EventSystem.current.IsPointerOverGameObject()` 方法可轻松判断鼠标是否在 UI 上。对于移动端,使用 `EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)` 来判断触摸是否在 UI 上。代码实现简单且高效。
|
11天前
|
图形学
Unity UGUI实现鼠标拖动图片
在 Unity UGUI 中实现鼠标拖动图片功能,主要涉及事件检测、坐标转换和物体位置更新。根据鼠标移动量更新图片位置。代码示例展示了如何通过这些步骤实现拖动效果。
|
5月前
|
图形学 开发者
【独家揭秘】Unity游戏开发秘籍:从基础到进阶,掌握材质与纹理的艺术,打造超现实游戏视效的全过程剖析——案例教你如何让每一面墙都会“说话”
【8月更文挑战第31天】Unity 是全球领先的跨平台游戏开发引擎,以其高效性能和丰富的工具集著称,尤其在提升游戏视觉效果方面表现突出。本文通过具体案例分析,介绍如何利用 Unity 中的材质与纹理技术打造逼真且具艺术感的游戏世界。材质定义物体表面属性,如颜色、光滑度等;纹理则用于模拟真实细节。结合使用两者可显著增强场景真实感。以 FPS 游戏为例,通过调整材质参数和编写脚本动态改变属性,可实现自然视觉效果。此外,Unity 还提供了多种高级技术和优化方法供开发者探索。
89 0
|
6月前
|
图形学
小功能⭐️Unity中利用材质自发光实现物体闪烁效果
小功能⭐️Unity中利用材质自发光实现物体闪烁效果
|
6月前
|
图形学
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
|
6月前
|
图形学
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
|
9月前
|
图形学
【Unity Shader#自定义材质面板_第一篇】
【Unity Shader#自定义材质面板_第一篇】
|
图形学
unity判断鼠标在不在UI上
unity判断鼠标在不在UI上
|
存储 编译器 图形学
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
220 0