Files
ichni_Official/Assets/Scripts/UI/Base/UIPageBase.cs
SoulliesOfficial 6aa498f6be
2025-08-11 14:04:06 -04:00

69 lines
2.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;
namespace Ichni.UI
{
public class UIPageBase : SerializedMonoBehaviour
{
public CanvasGroup mainCanvasGroup;
public UnityAction fadeInStartAction;
public UnityAction fadeInFinishAction;
public UnityAction fadeOutAction;
protected virtual void Awake()
{
CanvasGroup group = GetComponent<CanvasGroup>();
if (group != null)
{
mainCanvasGroup ??= group;
}
}
public virtual void FadeIn(float duration = 0.5f, bool ignoreTimeScale = false, UnityAction action = null)
{
mainCanvasGroup.gameObject.SetActive(true);
fadeInStartAction?.Invoke();
Tweener fade = mainCanvasGroup.DOFade(1f, duration).OnComplete(() =>
{
mainCanvasGroup.interactable = true;
mainCanvasGroup.blocksRaycasts = true;
fadeInFinishAction?.Invoke();
action?.Invoke();
});
if (ignoreTimeScale)
{
fade.SetUpdate(true);
}
fade.Play();
}
public virtual void FadeOut(float duration = 0.5f, bool ignoreTimeScale = false, UnityAction action = null)
{
mainCanvasGroup.interactable = false;
mainCanvasGroup.blocksRaycasts = false;
Tweener fade = mainCanvasGroup.DOFade(0f, duration).OnComplete(() =>
{
fadeOutAction?.Invoke();
action?.Invoke();
mainCanvasGroup.gameObject.SetActive(false);
});
if (ignoreTimeScale)
{
fade.SetUpdate(true);
}
fade.Play();
}
}
}