UIAnimation.cs 2.12 KB
using System;
using DG.Tweening;
using Unity.VisualScripting;
using UnityEngine;

public class UIAnimation : MonoBehaviour
{
    /// <summary>
    /// 渐变进入
    /// </summary>
    /// <param name="target"></param>
    ///  <param name="callBack"></param>
    /// <param name="duration"></param>
    public static void FadeIn(GameObject target, Action callBack, float duration = 0.2f)
    {
        target.SetActive(true);
        target.GetOrAddComponent<CanvasGroup>().DOFade(1, duration).OnComplete(() =>
        {
            if (callBack != null)
            {
                callBack.Invoke();
            }
        });
    }


    /// <summary>
    /// 渐变消失
    /// </summary>
    /// <param name="target"></param>
    ///  <param name="callBack"></param>
    /// <param name="duration"></param>
    public static void FadeOut(GameObject target, Action callBack, float duration = 0.2f)
    {
        target.GetOrAddComponent<CanvasGroup>().DOFade(0, duration).OnComplete(() =>
        {
            target.SetActive(false);
            if (callBack != null)
            {
                callBack.Invoke();
            }
        });
    }


    /// <summary>
    /// 缩放 小 ——> 大
    /// </summary>
    /// <param name="target"></param>
    /// <param name="callBack"></param>
    /// <param name="duration"></param>
    public static void ZoomIn(GameObject target, Action callBack, float duration = 0.2f)
    {
        target.SetActive(true);
        target.transform.DOScale(1, duration).OnComplete(() =>
        {
            if (callBack != null)
            {
                callBack.Invoke();
            }
        });
    }


    /// <summary>
    /// 缩放 大 一> 小
    /// </summary>
    /// <param name="target"></param>
    ///  <param name="callBack"></param>
    /// <param name="duration"></param>
    public static void ZoomOut(GameObject target, Action callBack, float duration = 0.2f)
    {
        target.transform.DOScale(0, duration).OnComplete(() =>
        {
            target.SetActive(false);
            if (callBack != null)
            {
                callBack.Invoke();
            }
        });
    }
}