您的位置:首页 > 移动开发 > Unity3D

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

2017-08-04 13:00 519 查看
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的时候,发现我们实际使用的函数参数其实并没有完整,实际上我们没有填的参数系统会用默认的参数来填充,所以只要填有用的就函数参数就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: