不知不觉都已经做游戏开发半年多的时间了,然而觉得自己的技术并没有积累多少,遂想在简书上记录一下自己平时积累的小技巧吧。
那先定一个小目标:每天完成一篇技术文章!
像我这样的拖延症晚期,希望不要写几天就弃坑了吧。
前言
在游戏开发中,经常会遇到这样的需求吧
在游戏物体的边缘加上一圈高亮的描边效果,用来提高物体的醒目性
这是在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
}
网友评论