using UnityEngine; using UnityEngine.InputSystem.XR; public class GenericUIInteractable : Interactable { [SerializeField] private GameObject targetUI; [SerializeField] private string interactableType; [SerializeField] private bool closeOtherUIs = true; [SerializeField] private GameObject[] uisToClose; public override void Interact() { // Call base interaction event OnInteract.Invoke(); // Close other UIs if needed if (closeOtherUIs) { foreach (var ui in uisToClose) { if (ui != null) { ui.SetActive(false); } } } // Show target UI if (targetUI != null) { targetUI.SetActive(true); // If there's a UI controller component, notify it of the interaction UIController uiController = targetUI.GetComponent(); if (uiController != null) { uiController.OnUIOpened(interactableType, gameObject); } } } private new void OnTriggerExit2D(Collider2D other) { if (targetUI != null) { targetUI.SetActive(false); base.OnTriggerExit2D(other); } } }