using DG.Tweening; using UnityEngine; public abstract class HUDCanvasGroupBase : MonoBehaviour { protected CanvasGroup canvasGroup; protected RectTransform rectTransform; protected Vector2 originalSizeDelta; private void Awake() { canvasGroup = GetComponent(); rectTransform = GetComponent(); originalSizeDelta = rectTransform.sizeDelta; SetOff(); } protected virtual void SetOn(float duration = 0f, Ease ease = Ease.Linear) { canvasGroup = (canvasGroup ? canvasGroup : GetComponent()); canvasGroup.DOKill(); if (canvasGroup.alpha > 0.99f) { canvasGroup.alpha = 1f; } else { canvasGroup.DOFade(1f, duration).SetEase(ease); } } protected virtual void SetOff(float duration = 0f, Ease ease = Ease.Linear) { canvasGroup = (canvasGroup ? canvasGroup : GetComponent()); canvasGroup.DOKill(); if (canvasGroup.alpha < 0.01f) { canvasGroup.alpha = 0f; } else { canvasGroup.DOFade(0f, duration).SetEase(ease); } } }