unity3d DOTween动画实现数字变化动画

  在游戏中,经常有这样的需要数字从1逐步增加到一个值N,而动画由1到这个值N的变化过程中,每变化一次,都是有动画,但是往往这个动画还没结束,下个动画就来了。想解决这个问题,可以使用下面这个思路。

即这个动画没播完之前,下个动画不能播,播完一个动画后,再进行下一个。下面请看代码。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;

public class InGameFlowerItem : MonoBehaviour
{
    public uint m_ID;
    public string m_SenderName = "";
    public int m_Num = 0;//已经送花的数量
    public Text m_NameText;
    public Text m_NumText;
    public float m_RemoveTime = 5f;
    Tweener m_Tweener;
    private int m_tweenNum = 0;
    private bool flag = false;

    public void Show()
    {
        gameObject.SetActive(true);
        m_NameText.text = m_SenderName;
        if (m_Num <= 5)
        {
            m_NumText.text = m_Num.ToString();
       }
        this.Invoke("RemoveSelf", m_RemoveTime);
    }

    public void AddNum()
    {
        this.CancelInvoke("RemoveSelf");
        this.Invoke("RemoveSelf", m_RemoveTime);
        if (m_Num > 5) //处理文字动画
        {
            m_tweenNum++;
        }
        else {
            m_Num++;
        }
    }

    void DoTween() {
        if (m_tweenNum <= 0)
        {
            flag = false;
            return;
        }
        if (m_Tweener != null && m_Tweener.IsPlaying())
        {
            return;
        }
        m_Tweener = m_NumText.transform.DOScale(3f, 0.25f).SetEase(Ease.InBack).OnComplete(() =>
        {
            m_NumText.text = (++m_Num).ToString();
            m_NumText.transform.DOScale(1f, 0.25f).OnComplete(() => {
                m_tweenNum--;
                DoTween();
            });
        });
    }

    // Update is called once per frame
    void Update()
    {
        if (m_tweenNum > 0 && !flag)
        {
            flag = true;
            DoTween();
        }
    }

    void OnDisable()
    {
        m_Tweener.Kill();
    }

    public void InitData(uint id,string senderName ,int num)
    {
        m_ID = id;
        m_SenderName = senderName;
        m_Num = num;
    }

    public void RemoveSelf()
    {
        InGameFlowerPanel.Inst.ClearFlowerItem(m_ID);
        this.CancelInvoke("RemoveSelf");
        Destroy(gameObject);
    }

}
时间: 2024-08-03 17:47:35

unity3d DOTween动画实现数字变化动画的相关文章

iOS动画详解(学习动画看这一篇就够了)

iOS动画详解(学习动画看这一篇就够了) 一.基础知识 CAAnimation.png 二.CABasicAnimation 1. 动画的属性和解释 2.属性值的解释 repeatCount : 如果在swift中需要一直不断重复:Float.infinity,OC:HUGE_VALF timingFunction: timingFunction.png kCAMediaTimingFunctionLinear--在整个动画时间内动画都是以一个相同的速度来改变.也就是匀速运动.一个线性的计时函数

iOS 仪表式数字跳动动画-b

前几天搞了 双曲线波浪动画(http://www.jianshu.com/p/7db295fd38eb)和环形倒计时动画(http://www.jianshu.com/p/d1d16dff33c9)而且感觉效果还不错,喜欢的人还很多,于是今天打算 在搞一个"仪表式数字跳动动画". 那么什么是仪表式数字跳动动画. 直接上效果 6月-27-2016 11-28-17.gif 一, 看了效果也许就明白仪表式数字跳动动画是什么鬼了(名字是我自己取得)先梳理一下思路: 首先可以看到文字在上下滑动

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Android TextView数字增长动画效果

某些app上,新进入一个Activity的时候,上面的一个关键性数字(比如金额)会以一个数字不断变大的动画来显示.刚开始的时候,想到的一个方案是:使用Thead+Handler,给定一个动画总时长与刷新间隔时长,根据公式(数字从0开始,每次增长值为数组除以动画执行次数,动画执行次数等于动画总时长除以刷新间隔时长); 每隔一段时间重新设置TextView的字符串为增加后的值,直到动画结束显示最终结果. 其实对安卓动画有一定了解的应该都知道ValueAnimator这个类,我们可以使用它来很好的实现

android中的动画之变化动画事例1

前面我已经说了变换动画,并且变换动画中分为4种情况:透明度动画.旋转动画.缩放动画.位移动画. 今天我来说说关于使用变换动画中的4种类型来实现它们的糅合. 我在这里主要使用了一个Animation对象中的一个监听方法--setAnimationListener.这个方法里面只有一个参数,安卓api给出的这个方法的完整形态-- void android.view.animation.Animation.setAnimationListener(AnimationListener listener)

android中的动画之变化动画事例4

今天我在这里说下Activity切换动画.Activity切换动画指的是Activity跳转的动画,分别分为:一个activity退出的动画,另一个activity进入的动画. 在android2.0之后,就有了一个方法来给我们实现这种效果--overridePendingTransition(int,int).从这个方法中,我们可以看出overridePendingTransition方法需要我们传递2个参数,第一个参数是第二个Activity进入的动画,第二个参数是第一个Activity退出

iOS开发——动画篇Swift篇&amp;动画效果的实现

Swift - 动画效果的实现 在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用animateWithDuration来实现动画 (1)此方法共有5个参数: duration:动画从开始到结束的持续时间,单位是秒 delay:动画开始前等待的时间 options:动画执行的选项.里面可以设置动画的效果.可以使用UIViewAnimationOpt

CoreAnimation4-隐式动画和显式动画

事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.动画并不需要你在Core Animation中手动打开,相反需要明确地关闭,否则他会一直存在. 当你改变CALayer的一个可做动画的属性,它并不能立刻在屏幕上体现出来.相反,它是从先前的值平滑过渡到新的值.这一切都是默认的行为,你不需要做额外的操作. 这看起来这太棒了,似乎不太真实,我们来用一个demo解释一下:首先和第一章“图层树”一样创建一个蓝色的方块,然后添加一个按钮,随机改变它的颜色.代码见清单

【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Tweene Animations. 主要类: Animation  动画 AlphaAnimation 渐变透明度 RotateAnimation 画面旋转 ScaleAnimation 渐变尺寸缩放 TranslateAnimation 位置移动 Animatio