using System; using Sirenix.OdinInspector; using UnityEngine; namespace SLSUtilities.UI { public class UIElementBase : SerializedMonoBehaviour { [Title("UI Base References")] public RectTransform rectTransform; public CanvasGroup canvasGroup; private void Reset() { rectTransform ??= GetComponent(); canvasGroup ??= GetComponent(); } public virtual void UpdateUI() { // Override in derived classes } public virtual void Show() { gameObject.SetActive(true); if(canvasGroup) { canvasGroup.alpha = 1; canvasGroup.interactable = true; canvasGroup.blocksRaycasts = true; } } public virtual void Hide() { if (canvasGroup) { canvasGroup.alpha = 0; canvasGroup.interactable = false; canvasGroup.blocksRaycasts = false; } gameObject.SetActive(false); } } }