using UnityEngine; public class SelectedVisual : MonoBehaviour { [SerializeField] private BaseInteractableObject _selectedObject; [SerializeField] private GameObject[] visualGameObjectArray; private void Start() { MouseInputManager.OnSelectedObjectChanged += Mouse_OnSelectedObjectChanged; print($"{_selectedObject.name} is subscribed to OnSelectedObjectChanged"); } private void OnDestroy() { MouseInputManager.OnSelectedObjectChanged -= Mouse_OnSelectedObjectChanged; print($"{_selectedObject.name} is Unsubscribed to OnSelectedObjectChanged"); } private void Mouse_OnSelectedObjectChanged(object sender, OnSelectedObjectChangedEventArgs e) { if (e.SelectedObject == _selectedObject) { Show(); } else { Hide(); } } private void Show() { foreach (var visualGameObject in visualGameObjectArray) visualGameObject.SetActive(true); } private void Hide() { foreach (var visualGameObject in visualGameObjectArray) visualGameObject.SetActive(false); } }