Unity中使用DOTween实现数字滚动效果

0. 实现背景:

  • 玩家在游戏中获得金币或战力等, 需要明显地显示出数字的变化, 可以采用数字滚动效果

1. 最终实现效果图:

Unity中使用DOTween实现数字滚动效果_第1张图片

2. DOTween相关术语:

  • Tweener
    • 一个tween控制value和animates
  • Sequence
    • 一个特殊的tween,并不是控制value,和其它的tween一起成为一个动画组
  • Tween
    • 一个普通词,既可以表示Tweener也可以表示Sequence
  • Nested tween
    • 一个tween,包含Sequence
  • 创建一个Tweener的通用方法
    • static DOTween.To(getter, setter, to, float duration)
    • getter: 处理Tweener返回的值, 可以是匿名方法或lambda表达式
    • setter: 设置Tweener的初始值, 可以是匿名方法或lambda表达式
    • to: Tweener的目标值
    • duration: Tweener的周期, 数值越小, 动画实现越快

3. 实现方法

3.1 创建一个Sequence并设置它的SetAutoKill属性为false, 防止它实现一次滚动动画之后就自动销毁.

//声明
private Sequence mScoreSequence;
//函数内初始化
mScoreSequence = DOTween.Sequence();
//函数内设置属性
mScoreSequence.SetAutoKill(false);

3.2 当数据更新时, 调用该界面负责处理该数据的方法, 此时用新的数据创建一个Tweener, 并加入动画序列中

mScoreSequence.Append(DOTween.To(delegate (float value) {
    //向下取整
    var temp = Math.Floor(value);
    //向Text组件赋值
    currentScoreText.text = temp + "";
}, mOldScore, newScore, 0.4f));
//将更新后的值记录下来, 用于下一次滚动动画
mOldScore = newScore;

4. 项目地址

jingangxin36/Tetris

5. 其它实现效果和方法:

  • 看起来每个数字都在滚动
    • 讓數字變化炫酷起來,數字滾動Text組件[Unity]
  • 定制数字滚动时间和数字变化次数
    • 计算新旧数据的差值,
    • 根据滚动次数来计算每次变化的数据差值
    • 根据滚动时间和滚动次数计算出单次数据滚动的时间间隔, 往TimerManager(需要另外实现)中添加更新UI数值的计时器

6. 参考:

  • DOTween 官方文档
  • DOTween 中文文档

你可能感兴趣的:(Unity,3D,C#)