美文网首页
【每天一个Unity技巧】给游戏物体设置边缘高亮

【每天一个Unity技巧】给游戏物体设置边缘高亮

作者: 木心Sepith | 来源:发表于2017-02-10 19:00 被阅读5938次

不知不觉都已经做游戏开发半年多的时间了,然而觉得自己的技术并没有积累多少,遂想在简书上记录一下自己平时积累的小技巧吧。

那先定一个小目标:每天完成一篇技术文章!

像我这样的拖延症晚期,希望不要写几天就弃坑了吧。

前言

在游戏开发中,经常会遇到这样的需求吧

在游戏物体的边缘加上一圈高亮的描边效果,用来提高物体的醒目性

这是在FPS游戏中常用到的手段,玩家的准心瞄准到了可拾取的物体,物体显示高亮效果,表示该物体可以拾取。

h1z1

又或者是求生之路中用高亮效果来醒目的提示队友的当前位置

求生之路 火炬之光

方案

因为我在做公司的VR项目时,需要在玩家交互时进行高亮反馈,在网上找了不少的高亮插件,筛选之后选择了Highlighting System这个插件。

下载了这个插件后,将我的代码挂到需要高亮的物体上,然后通过SwithHightlight方法进行高亮控制就可以了,方便简单。

/******************************************************************************
 * 
 * Logs:
 * 2017-2-10  mx  Initial version:Added API SwithHightlightAPI()
 * 
 *
 ******************************************************************************/


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

/// <summary>
/// 将此脚本挂载到需要高亮的物体上
/// required package: Highlighting System
/// </summary>
public class HighlightObject : MonoBehaviour
{
    protected Highlighter h;

    public enum HighlightType
    {
        Once,//变化一次
        Constant,//持续
        Flash//闪烁
    }

    public Color highlightColor = Color.red;

    void Awake()
    {
        h = gameObject.AddComponent<Highlighter>();
        if (Camera.main.GetComponent<HighlightingRenderer>() == null)
        {
            Camera.main.gameObject.AddComponent<HighlightingRenderer>();
        }
    }

    /// <summary>
    /// API:修改物体是否开启高亮
    /// </summary>
    /// <param name="showHightlight">是否开启高亮</param>
    public void SwithHightlight(bool showHightlight)
    {
        SwithHightlight(showHightlight, HighlightType.Once);
    }

    /// <summary>
    /// API:修改物体是否开启高亮
    /// </summary>
    /// <param name="showHightlight">是否开启高亮</param>
    /// <param name="type">高亮类型</param>
    public void SwithHightlight(bool showHightlight, HighlightType type)
    {
        switch (type)
        {
            case HighlightType.Once:
                if (showHightlight)
                    h.ConstantOnImmediate(highlightColor);
                else
                    h.ConstantOffImmediate();
                break;

            case HighlightType.Constant:
                if (showHightlight)
                    h.ConstantOn(highlightColor);
                else
                    h.ConstantOff();
                break;

            case HighlightType.Flash:
                if (showHightlight)
                    h.FlashingOn(highlightColor, new Color(0, 0, 0, 0));
                else
                    h.FlashingOff();
                break;
        }
    }

    #region 测试:QWE键控制高亮类型
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            SwithHightlight(true);
        }
        else if (Input.GetKeyUp(KeyCode.Q))
        {
            SwithHightlight(false);
        }
        if (Input.GetKeyDown(KeyCode.W))
        {
            SwithHightlight(true, HighlightType.Constant);
        }
        else if (Input.GetKeyUp(KeyCode.W))
        {
            SwithHightlight(false, HighlightType.Constant);
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            SwithHightlight(true, HighlightType.Flash);
        }
        else if (Input.GetKeyUp(KeyCode.E))
        {
            SwithHightlight(false, HighlightType.Flash);
        }
    }
    #endregion

}


相关资料

AssetStore
官方网站

相关文章

  • 【每天一个Unity技巧】给游戏物体设置边缘高亮

    不知不觉都已经做游戏开发半年多的时间了,然而觉得自己的技术并没有积累多少,遂想在简书上记录一下自己平时积累的小技巧...

  • Highlighting System 5.0(高亮系统5.0)

    1 Overview 概述 高亮系统允许你简单在Unity项目中将整体外部轮廓效果添加给物体。允许你设置任何物体高...

  • Unity的shader学习:实现物体边缘高亮

    游戏里常出现的一种需求,就是鼠标触碰到角色或物体时高亮。正在学习unity的shader,看官方的shader示例...

  • 护盾/能量场效果

    GitHub项目地址 实现原理:1、边缘发光2、相交高亮,主要指能量场和别的物体相交的地方是高亮显示3、扭曲效果,...

  • unity小知识总结

    给游戏物体添加tag值,获取tag gameObject.tag //设置游戏对象的tag值 gameObject...

  • Unity VR Samples示例项目分析

    Unity VR Samples示例项目分析核心脚本和对象 在VR场景中,我们需要激活我们正在看着的物体,高亮或者...

  • Unity VR Samples示例项目分析

    Unity VR Samples示例项目分析 核心脚本和对象 在VR场景中,我们需要激活我们正在看着的物体,高亮或...

  • 关节组件-Joint

    Unity中可以使用物理关节组件使物体连接起来,如图1.1是给游戏对象添加关节组件的步骤: 也可以在物体的Insp...

  • Cesium实现更实用的3D描边效果(附源码)

    3D对象描边,常用于物体的高亮显示。本文将详细介绍如何在Cesium中实现该功能:提取物体完整的边缘,用不同颜色区...

  • unity 笔记

    unity 问题及解决方法 常用快捷键 Tool 定位游戏物体 方法【1】直接在左侧面板双击游戏物体方法【2】在左...

网友评论

      本文标题:【每天一个Unity技巧】给游戏物体设置边缘高亮

      本文链接:https://www.haomeiwen.com/subject/mmfnittx.html