48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
using HighlightPlus;
|
|
using UnityEngine;
|
|
|
|
public class OutLineMgr : Singleton<OutLineMgr>
|
|
{
|
|
private HighlightEffect lastHighlight; // 上一次命中的高亮组件
|
|
protected override void OnUpdate()
|
|
{
|
|
base.OnUpdate();
|
|
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
|
|
if (Physics.Raycast(ray, out RaycastHit hit))
|
|
{
|
|
GameObject hitObj = hit.collider.gameObject;
|
|
HighlightEffect currentHighlight = hitObj.GetComponent<HighlightEffect>();
|
|
Debug.Log(hitObj.name);
|
|
// 如果是新物体
|
|
if (currentHighlight != null && currentHighlight != lastHighlight)
|
|
{
|
|
// 关闭上一个高亮
|
|
if (lastHighlight != null)
|
|
{
|
|
lastHighlight.highlighted = false;
|
|
}
|
|
// 开启当前高亮
|
|
currentHighlight.highlighted = true;
|
|
lastHighlight = currentHighlight;
|
|
}
|
|
else if (currentHighlight == null && lastHighlight != null)
|
|
{
|
|
// 没有命中高亮物体,关闭之前的
|
|
lastHighlight.highlighted = false;
|
|
lastHighlight = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 如果什么都没命中,也关闭之前的
|
|
if (lastHighlight != null)
|
|
{
|
|
lastHighlight.highlighted = false;
|
|
lastHighlight = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|