Unity 鼠标碰撞检测 物体闪烁 HighLighting

    提示:源码附在文后~大家互相学习

目录

前言

一、组件结构

1. 项目结构

 2.场景介绍

二、功能实现

总结


前言

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和尺寸用于不同场合。个人总结归纳,便于使用。避免重复造轮子~~~

CSDN组件下载:https://download.csdn.net/download/u014641682/87631389

猜你喜欢

转载自blog.csdn.net/u014641682/article/details/129859530
今日推荐