using UnityEngine; public class OutlineManager : MonoBehaviour { private Outliner currentOutliner; void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); float minDistance = Mathf.Infinity; Outliner closestOutliner = null; foreach (Outliner outliner in FindObjectsOfType()) { if (IsRayIntersectingRenderer(ray, outliner, out float distance) && distance < minDistance) { minDistance = distance; closestOutliner = outliner; } } if (closestOutliner != currentOutliner) { RemoveOutline(); currentOutliner = closestOutliner; currentOutliner?.EnableOutline(); } } private bool IsRayIntersectingRenderer(Ray ray, Outliner outliner, out float distance) { distance = Mathf.Infinity; Renderer renderer = outliner.GetRenderer(); if (renderer == null) return false; Bounds bounds = renderer.bounds; return bounds.IntersectRay(ray, out distance); } private void RemoveOutline() { if (currentOutliner != null) { currentOutliner.DisableOutline(); currentOutliner = null; } } }