2025-05-10 16:23:36 +08:00

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;
}
}
}
}