using HighlightPlus; using UnityEngine; public class OutLineMgr : Singleton { 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(); 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; } } } }