DOTween實現緩動變值動效

SouthBegonia發表於2022-01-04

DOTween.To(getter, setter, to, float duration) 是常用的一個變值方法(一定時間將某變數從起始值到終點值進行變化),可以便捷實現 滾分、漲進度條 等功能

但大部分用的時候都是基於 Linear 勻速曲線 進行變化的(因為沒刻意設定呀...),但也可以有緩動變化的情況,例如:

此類效果可以在Unity中配合DOTween.To()實現,不僅可以使用內建Ease曲線型別,還可以自定義AnimationCurve曲線實現

例如根據自定義AnimationCurve曲線實現的緩動滾分效果如下:

程式碼實現

public static class NumberEffectUtility
{
    public static void DoNumber(this Text numberText, int start, int end, float duration, Ease easeType = Ease.Linear)
    {
        DOTween.To(
                () => start, //起始值
                x =>
                {
                    numberText.text = Mathf.Floor(x).ToString(); //變化值
                },
                end, //終點值
                duration) //持續時間
            .SetEase(easeType) //緩動型別
            .SetUpdate(true); //不受Time.Scale影響
    }

    public static void DoNumber(this Text numberText, int start, int end, float duration, AnimationCurve animCurve)
    {
        DOTween.To(
                () => start, //起始值
                x =>
                {
                    numberText.text = Mathf.Floor(x).ToString(); //變化值
                },
                end, //終點值
                duration) //持續時間
            .SetEase(animCurve) //緩動型別
            .SetUpdate(true); //不受Time.Scale影響
    }
}

參考文章

相關文章