关于Unity中DOTween插件的使用(专题一)

DOTween

flash里面的一个概念叫补间动画,DOTween就是干这个事情的。

补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好。

当我们安装好DOTween后,它就会提供很多补间的功能方便我们使用。当我们安装了这个插件以后,我们就可以快速使用代码来生成补间动画。

例子:赛车选择界面,旋转赛车后有一个慢慢回弹的动画效果。

安装DOTween
1: 去网站http://dotween.demigiant.com/getstarted.php下载
2: 将DOTween解压后复制到项目的任意目录下(Editor, Plugins or Resources除外);
3: 运行DOTween的Setup: 菜单栏的 Tools/Demigiant;
4: 在代码里面 加上 DOTween的名字空间 using DG.Tween;
5: 安装完DOTween插件后,很多组件能够支持Tween;

DOTween对组件的扩展

1: 其他的组件扩展了Tween接口: 详情见文档:
http://dotween.demigiant.com/documentation.php
  AudioMixer
  AudioSource
  Camera
  Light
  Material:
  Rigidbody:
  Rigidbody2D:
  Transfrom
2: 例如Transfrom组件:
  (1)组件实例.DOMove: 平移;
  (2)组件实例.DOScale: 缩放;
  (3)组件实例.DORotate 旋转;

Tweener常用操作

1: 常用的播放控制函数
  组件实例.DOPause(); 暂停一个Tween;
  组件实例.DOPlay/DOPlayBackwards/DOPlayForward; 播放
  组件实例.DOKill; // 杀掉Tween;

2:设置循环次数 t.SetLoop(); -1:为一直循环;
5: Tweener 常用的事件:
  (1)OnStart();
  (2)OnComplete();
  (3)OnKill();
  (4)OnUpdate();

DOTween实例

1.创建Unity项目

2.解压下载的DOTween_1_1_620_hc.zip,复制文件夹到Unity项目目录的根目录下,根据提示点Setup DOTween,完成后多出两个文件夹

3.再创建Scripts和Scenes文件夹,保存场景

4.创建一个立方体Cube,再创建一个脚本dotween_use

 打开dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加这个DOTween所在的名字空间

public class dotween_use : MonoBehaviour {

    //开始播放前所调用的函数
    void on_tween_start()
    {
        Debug.Log("on_tween_start");
    }

    //结束播放后所调用的函数
    void on_tween_end()
    {
        Debug.Log("on_tween_end");
    }

    // Use this for initialization
    void Start () {
        // 创建一个补间动画,在5秒之内移动到目标点,会慢慢停下来,不会很生硬的那种
        //Tweener t = this.transform.DOMove(new Vector3(0, 0, 10), 5.0f);//对象t会自动删除

        //创建一个补间动画,在5秒之内不断缩小,缩小到没有
        //t = this.transform.DOScale(new Vector3(0, 0, 0), 5.0f);

        //创建一个补间动画,在3秒之内绕Y轴旋转145度
        Tweener t = this.transform.DORotate(new Vector3(0, 145, 0), 3.0f);//这个Vector3(0, 145, 0)是欧拉角,和Unity编辑器里面是一样的
                                                                                                            //也有用四元素作为参数的旋转函数

        t.SetLoops(4); //循环播放4次, -1无限制循环播放,每次播放都是重头开始
        // this.transform.DOPause(); // 暂停播放;
        // this.transform.DOPlay(); // 开始播放;
        // this.transform.DOKill(); // 移除补间动画;

        t.OnStart(this.on_tween_start); // 在动画播放前调用事件

        t.OnComplete(this.on_tween_end); // 大写(一般用这个),在动画播放后调用事件
        //t.onComplete += this.on_tween_end;//小写,是委托,也是在动画播放后调用事件,效果一样

    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

5.运行的时候会多出这两个节点,不能删除或者隐藏,否则DOTween动画将停下来

Sequence队列

1: 创建一个队列容器: DOTween.Sequence()
2: 将Tween加入到容器队列 seq.Append(tween);
3: SetLoops():设置队列容器的循环次数;
4: Insert: 插入一个并行的Tween;

Sequence实例

1.创建Unity项目

2.解压下载的DOTween_1_1_620_hc.zip,复制文件夹到Unity项目目录的根目录下,根据提示点Setup DOTween,完成后多出两个文件夹

3.再创建Scripts和Scenes文件夹,保存场景

4.创建一个立方体Cube,再创建一个脚本dotween_use

 打开dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加这个DOTween所在的名字空间

public class dotween_use : MonoBehaviour {

    // Use this for initialization
    void Start () {
        // 队列容器
        // (1)创建一个队列
        Sequence seq = DOTween.Sequence();
        // (2)将一个Tweener对象放到队列的后面
        seq.Append(this.transform.DOMoveX(10, 5.0f));//在5秒之内移动到目标点
        seq.Append(this.transform.DOMoveX(0, 5.0f));//在5秒之内移动到原点
        seq.SetLoops(-1);//无限循环播放

        // 插入一个Tweener对象到队列的某一个时刻,这里时刻是0
        seq.Insert(0, this.transform.DOScale(new Vector3(2, 2, 2), 5.0f));//从0秒开始,在5秒内不断放大到两倍

    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

Ease缓动效果

1: Tweener设置缓动动画:
SetEase(效果类型);
2: 效果类型:
OutBack: 快速移动超出目标,然后慢慢回到目标点;
.....

Ease缓动效果案例

1.创建Unity项目

2.解压下载的DOTween_1_1_620_hc.zip,复制文件夹到Unity项目目录的根目录下,根据提示点Setup DOTween,完成后多出两个文件夹

3.再创建Scripts和Scenes文件夹,保存场景

4.创建一个立方体Cube,再创建一个脚本dotween_use

 打开dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加这个DOTween所在的名字空间

public class dotween_use : MonoBehaviour {

    // Use this for initialization
    void Start () {
        //缓动效果
        Tweener t = this.transform.DORotate(new Vector3(0, 270, 0), 3.0f);//在3秒之内绕Y轴旋转270度
        t.SetEase(Ease.OutBack);//添加一个回弹的效果,还有很多的效果可以Ease.XXX里面查找,选中Ease按F12

        //this.transform.DOMoveX(4, 3.0f).SetEase(Ease.OutBack);//有回弹效果的移动
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

 注意:

每次按某个函数的F12的时候,发现我们实际使用的函数参数其实并没有完整,实际上我们没有填的参数系统会用默认的参数来填充,所以只要填有用的就函数参数就好了。

原文地址:https://www.cnblogs.com/HangZhe/p/7284502.html