yyl
2025-06-09 d68f2c0be6edf436b6033773147588b7574a93b0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
 
/// <summary>
/// DOTween 扩展方法,为不同组件提供动画功能
/// </summary>
public static class DOTweenExtensions
{
    /// <summary>
    /// 为 CanvasGroup 提供淡入淡出动画
    /// </summary>
    /// <param name="target">目标 CanvasGroup</param>
    /// <param name="endValue">目标透明度值 (0-1)</param>
    /// <param name="duration">动画持续时间</param>
    /// <returns>Tweener 实例</returns>
    public static Tweener DOFade(this CanvasGroup target, float endValue, float duration)
    {
        return DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration);
    }
 
    /// <summary>
    /// 为 RectTransform 提供移动动画
    /// </summary>
    /// <param name="target">目标 RectTransform</param>
    /// <param name="endValue">目标位置</param>
    /// <param name="duration">动画持续时间</param>
    /// <returns>Tweener 实例</returns>
    public static Tweener DOAnchorPos(this RectTransform target, Vector2 endValue, float duration)
    {
        return DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration);
    }
 
    /// <summary>
    /// 为 Transform 提供缩放动画
    /// </summary>
    /// <param name="target">目标 Transform</param>
    /// <param name="endValue">目标缩放值</param>
    /// <param name="duration">动画持续时间</param>
    /// <returns>Tweener 实例</returns>
    public static Tweener DOScale(this Transform target, Vector3 endValue, float duration)
    {
        return DOTween.To(() => target.localScale, x => target.localScale = x, endValue, duration);
    }
}