【Unity】简单的边缘高亮

news2024/11/14 1:18:18

【Unity】简单的边缘高亮

工程文件下载地址

全部文件

使用方法

方法功能
On()打开单帧高亮显示
On(Color color)打开单帧高亮显示
FlashingParams(Color color1, Color color2, float freq)闪烁的参数设置
FlashingOn打开闪烁
FlashingOn(Color color1, Color color2)从颜色1切换到颜色2
FlashingOn(Color color1, Color color2, float freq)从color1到color2按指定频率打开闪烁
FlashingOn(float freq)按规定的频率打开闪光灯
FlashingOff()关掉闪光
FlashingSwitch()切换闪光模式
ConstantParams(Color color)设置常量高亮颜色
ConstantOn()淡入持续的高光
ConstantOn(Color color)褪色在不断突出与给定的颜色
ConstantOff()淡出持续的高光
ConstantSwitch()切换不断凸显
ConstantOnImmediate()立即打开持续高亮(不褪色)
ConstantOnImmediate(Color color)立即用指定的颜色打开持续高亮(不褪色)
ConstantOffImmediate()立即关闭持续高亮(不淡出)
ConstantSwitchImmediate()立即切换常量高亮(不淡入/淡出)
OccluderOn()启用遮光板模式
OccluderOff()关闭遮光板模式
OccluderSwitch()切换遮光板模式
Off()关掉所有类型的高亮显示
Des()销毁这个HighlightableObject组件

Demo

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HighlightUser : MonoBehaviour
{
   public  enum HighType {on, ConstantOn , ConstantOnImmediate , ConstantSwitch , FlashingOn , Off }
    RaycastHit hit;
    Action<HighlightableObject> action;
    GameObject Target;
    HighType currentType;
    Color CurrentColor=Color.green;

    private HighType CurrentType {
        get {
            return currentType;
        }
        set
        {
            currentType = value;
            SetAction(currentType);
        }
   
    }
    private void Start()
    {
        CurrentType = HighType.on;
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray,out hit))
            {
                Target = hit.collider.gameObject;
                higtObj(Target);
            }
          
        }
    }
    
    void higtObj(GameObject game)
    {
        HighlightableObject highlightableObject;
        game.TryGetComponent<HighlightableObject>(out highlightableObject);
        if (highlightableObject)
        {
            action(highlightableObject);
        }
        else
        {
            game.AddComponent<HighlightableObject>();
            higtObj(game);
        }
    }

     void SetAction(HighType type)
    {
        switch (type)
        {
            case HighType.on:
                action = On;
                break;
            case HighType.ConstantOn:
                action = ConstantOn;
                break;
            case HighType.ConstantOnImmediate:
                action = ConstantOnImmediate;
                break;
            case HighType.ConstantSwitch:
                action = ConstantSwitch;
                break;
            case HighType.FlashingOn:
                action = FlashingOn;
                break;
            case HighType.Off:
                action = Off;
                break;
            default:
                break;
        }

    }
    /// <summary>
    /// 单帧高亮
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void On(HighlightableObject highlightableObject)
    {
        highlightableObject.On(CurrentColor);
    }
    /// <summary>
    /// 持续高亮
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void ConstantOn(HighlightableObject highlightableObject)
    {
        highlightableObject.ConstantOn(CurrentColor);
    }
    /// <summary>
    /// 立刻持续高亮
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void ConstantOnImmediate(HighlightableObject highlightableObject)
    {
        highlightableObject.ConstantOnImmediate(CurrentColor);
    }
    /// <summary>
    /// 切换不断凸显
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void ConstantSwitch(HighlightableObject highlightableObject)
    {
        highlightableObject.ConstantSwitch();
    }
    /// <summary>
    /// 打开闪烁
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void FlashingOn(HighlightableObject highlightableObject)
    {
        highlightableObject.FlashingOn(Color.yellow,Color.blue);
    }
    /// <summary>
    /// 关闭全部高亮
    /// </summary>
    /// <param name="highlightableObject"></param>
    private void Off(HighlightableObject highlightableObject)
    {
        highlightableObject.Off();
    }

    public void SetType(int  highType)
    {
        CurrentType = (HighType)highType;
    }
    public void SetColor(int color)
    {
        if (color==0)
        {
            CurrentColor = Color.red;
        }
        else if (color == 1)
        {
            CurrentColor = Color.green;
        }
        else if (color == 2)
        {
            CurrentColor = Color.blue;
        }
     
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python实战基础16-模块

Python中的模块 Python提供了强大的模块支持&#xff0c;主要体现为不仅在python标注库中包含了大量的模块&#xff08;称为标准模块&#xff09;&#xff0c;而且还有很多第三方模块&#xff0c;另外开发者自己也可以开发自定义模块。 说的通俗点&#xff1a;模块就好比是工具…

ATA-L系列水声功率放大器-宽频带-大功率

水声功率放大器是一种专门用于水声信号放大的电子设备。水声功率放大器在水声通信中具有重要的作用&#xff0c;它可以将微弱的水声信号放大至足够强度&#xff0c;以提高信噪比和传输距离&#xff1b;同时&#xff0c;还可以进行信号处理和优化&#xff0c;以及温度控制等功能…

计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍导文 计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现 文章重点 摘要 本文基于Java技术,设计并实现了一个电子产品垂直电商平台。该平台主要针对电子产品市场,提…

ESP32-C2系列开发板

C2是一个芯片采用4毫米x 4毫米封装&#xff0c;与272 kB内存。它运行框架&#xff0c;例如ESP-Jumpstart和ESP造雨者&#xff0c;同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统&#xff0c;受到了全球用户的信赖。它由支持Espressif以及所有…

充电桩测试设备TK4800充电机(桩)现校仪检定装置

TK4800是一套专用于检定电动汽车非车载充电机现场校验仪和电动汽车交流充电桩现场校验仪的装置&#xff0c;针对新能源汽车充电动态特性进行设计&#xff0c;支持稳态电能计量&#xff08;针对恒定负载&#xff09;和动态电能计量&#xff08;针对波动性负载&#xff09;两种模…

【CesiumJS入门】(1)创建Viewer及相关配置项

前言 在上一篇博客中&#xff0c;我们直接在vue组件完成初始渲染并创建 DOM 节点后通过 const map new Cesium.Viewer(cesiumContainer)构建了一个地球场景。 而本篇&#xff0c;我们将会专门把地球创建的方法写在一个js文件中&#xff0c;以便后续的调用。 同时&#xff0…

Filebeat技术栈总结

filebeat 是一个轻量型日志采集器&#xff0c;本质上是一个 agent 。不依赖于任何应用&#xff0c;可以安装在任何节点上&#xff0c;可单独使用 Filebeat 并根据配置读取对应位置的日志进行上报和搜集。 filebeat 内置了常用的 output 组件&#xff0c;例如 kafka、ElasticSe…

电脑硬盘空间大量被占用怎么办?

通常情况下&#xff0c;电脑硬盘空间会被系统文件、已安装的应用程序或个人文件、备份、病毒或其他恶意软件或其他未知文件占用。那我们应该怎样解决硬盘空间大量被占用的问题呢&#xff1f; 方法1&#xff1a;通过存储功能查看内容并释放空间 您可以通过Windows 11/10中的存储…

华为外包待了一年,我离职了...

这次来聊一个大家可能也比较关心的问题&#xff0c;那就是就业城市选择的问题。而谈到这个问题&#xff0c;就不可避免地会谈到一些关于&#xff1a;机会&#xff1f;技术氛围&#xff1f;跳槽&#xff1f;薪资水平&#xff1f;等等一系列问题。 正好&#xff0c;这也是大家所…

滑动窗口思想(数组)-python

文章目录 前言一、思想二、相关题目讲解1.长度最小的子数组(leetcode 209.)2.水果成篮(leetcode 904.)3.最小覆盖子串(leetcode 76.) 三、 模拟行为螺旋矩阵II(leetcode.59)leetcode 54.螺旋矩阵剑指Offer 29. 顺时针打印矩阵 总结 前言 滑动窗口的精妙之处在于根据当前子序列…

物业管理系统对小区物业的作用太重要了,零代码平台改变原有认知

小区物业处作为业主与小区的沟通场所&#xff0c;经常会遇到缺乏专业人才&#xff0c;导致管理不善、服务不到位&#xff0c;难以为业主提供良好的服务体验&#xff0c;那么拥有一款成熟稳定的物业管理系统就成了物业管理处的重要选择&#xff0c;不仅能为业主带来更好的服务体…

悦灵犀-全新的智能AI工具

最近一段时间&#xff0c;人工智能再次成为人类创新的焦点&#xff0c;不得不说&#xff0c;人工智能正在以一种全新的方式改变人们的生活&#xff0c;这是一个以大模型为核心的人工智能新时代&#xff0c;大模型的出现让千行百业将迎来新的机遇。 悦享星光作为国内高新技术企…

Zinx框架学习 - 构建最基础的Server

Zinx - V0.1 构建最基础的Server Zinx的框架结构&#xff1a; 整体思路&#xff1a; 客户端发送请求到服务器端&#xff0c;服务端会有一个Goroutine专门处理listenner和监听这个过程&#xff0c;然后有客户端连接过来之后会启动一个客户端处理Goroutine&#xff0c;这个Goro…

深度学习 - 52.推荐场景的多样性与 MMR [Maximal Marginal Relevance] 简介与 Python 实现

目录 一.引言 二.多样性 三.MMR 流程 1.标准 MMR 2.窗口 MMR 四.基于向量内积相似度的 MMR Python 实现 1.模拟用户 rank 结果 2.向量内积计算 MRi 2.1 获取向量计算 max sim 2.2 argmax 获取最优 MRi item 3.MMR 测试 4.MMR 完整代码 五.总结 一.引言 MMR - Ma…

记一次k8s节点上出现node.kubernetes.io/disk-pressure污点的问题

目录 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 其他问题 问题描述 k8s部署时pod一直属于Pending状态&#xff0c;也就是说pod未调度到k8s节点上 原因分析&#xff1a; 通过以下命令查看下pod kubectl get pod 以上命令可以看到各个pod的状态&#xff0c…

【商城后台管理系统】项目初始化(UmiJS)

目录 一、运行时配置 1.1 配置方式 1.2 常用配置项 1.3 关于运行时配置说明 二、使用Umi UI 2.1 Umi UI的特性 2.2 项目中安装Umi UI 2.3 使用Umi UI 三、Umi JS总结 3.1 路由状态管理 3.2 配置代理 3.3 封装requset 一、运行时配置 运行时配置和配置的区别是他跑…

Geohash算法原理及实现

最近需要实现一个功能&#xff0c;查找车辆附近的加油站&#xff0c;如果车和加油站距离在200米以内&#xff0c;则查找成功。 加油站数量肯定不小&#xff0c;能否缩小查找范围&#xff0c;否则以遍历形式&#xff0c;效率肯定高不了。 Geohash算法就是将经纬度编码&#xf…

又名管道和无名管道

一、进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09; 概念&#xff1a;就是进程和进程之间交换信息。 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共…

数字化时代,低代码+进销存管理系统让你省时省力

进销存系统是一种用于管理企业物资流动和库存的软件系统&#xff0c;可以帮助企业优化物资管理过程&#xff0c;提高效率&#xff0c;减少成本&#xff0c;从而提升企业的盈利能力。本文将详细介绍进销存系统的定义、功能、好处以及如何选择适合自己企业的进销存系统&#xff0…

【嵌入式烧录/刷写文件】-2.6-剪切/保留Intel Hex文件中指定地址范围内的数据

案例背景&#xff1a; 有如下一段HEX文件&#xff0c;保留地址范围0x9140-0x91BF内的数据&#xff0c;删除地址范围0x9140-0x91BF外的数据。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485868788898A…