博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Unity中DOTween插件的使用(专题一)
阅读量:6818 次
发布时间:2019-06-26

本文共 4393 字,大约阅读时间需要 14 分钟。

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的时候,发现我们实际使用的函数参数其实并没有完整,实际上我们没有填的参数系统会用默认的参数来填充,所以只要填有用的就函数参数就好了。

转载地址:http://wvszl.baihongyu.com/

你可能感兴趣的文章