提示:源码附在文后~大家互相学习
目录
前言
Unity系统开发过程中,时常会有鼠标放置在某一物体上,物体高亮显示、闪烁等效果。其实实现起来比较简单。使用HighlightingSystem小组件即可。所以整理出组件,方便每次使用!大家共同学习!
一、组件结构
1. 项目结构
2.场景介绍
场景中给相机上绑定HighlightingEffect脚本。
为所有需要单独发光的物体,均绑定HighlightableObject脚本。并增加碰撞盒,用于检测鼠标碰到物体。
二、功能实现
我们自己控制的脚本LightingManager,绑定在闪烁物体组上,对闪烁物体进行整体管理。
鼠标放置,检测碰撞到物体,则打开物体的闪烁功能。所有物体均装入highlightableObjects中,用于控控制闪烁、取消闪烁。
void Update()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
bool isCollider = Physics.Raycast(ray, out RaycastHit hitInfo);
if (isCollider)
{
Color startColor = new Color();
if (hitInfo.collider.name.Contains("Blue"))
{
startColor = Color.blue;
}
else if (hitInfo.collider.name.Contains("Yellow"))
{
startColor = Color.yellow;
}
else if (hitInfo.collider.name.Contains("Red"))
{
startColor = Color.red;
}
//绑定高光组件
HighlightableObject highlightable = hitInfo.transform.GetComponent<HighlightableObject>();
//打开发光特效
highlightable.FlashingOn(startColor, new Color(0, 1, 1, 0));
highlightableObjects.Add(highlightable);
highlightableObjects.ForEach(v =>
{
if (v != highlightable)
{
v.FlashingOff();
}
});
}
}
总结
组件结构简单,层级明朗,便于理解。可更改ui和尺寸用于不同场合。个人总结归纳,便于使用。避免重复造轮子~~~
优快云组件下载:https://download.youkuaiyun.com/download/u014641682/87631389