DoTween 是一个“动画插件”。

一.DoTween 资源结构

1.资源目录结构 Demigiant [插件的根目录,也是该插件的公司名] ___DemiLib [插件核心类库] ___DOTween [插件基础版资源] ___DOTweenPro [插件专业版资源,在基础版之上扩展出高级功能] ___DOTweenPro Examples [插件专业版实例工程] 2.插件功能菜单 功能组件:Component–> DoTween –>DoTween Animation [基础动画] DoTween Path [路径动画] 备注:这两个动画组件,就是DoTween Pro 内提供的,使用组件控制动画。 设置面板:Tools–>Demigiant–>DoTween Utility Panel [

](http://www.wjgbaby.com/wp-content/uploads/2018/02/18020101-300x216.jpg)
](http://www.wjgbaby.com/wp-content/uploads/2018/02/18020101-300x216.jpg)

二.DoTween 基础了解

1.命名空间 当我们需要在代码中使用DoTween 的时候,就需要先导入对应的命名空间: using DG.Tweening; 2.DoTween API 特征 ①当我们引入DoTween 的命名空间后,在代码中就可以使用DoTween 相关的功能类以及方法; ②除了这些功能类以为,DoTween 还会在Unity 本来的功能组件类中“注入”DoTween 的控制方法,这些方法一般都是“DOxxx”。

三.DoTween 元素动画

1.模型动画 1. 模型移动动画:DOMove 方法; 2. 模型旋转动画:DORotate 方法; 3. 模型缩放动画:DOScale 方法。 2.UI 动画 1. 图片颜色动画:DOColor 方法; 2. 图片透明度动画:DOFade 方法; 3. 图片缩放动画:DOScale 方法。

四.DoTween 属性设置

这一组方法的方法名,统一以“Set”开头;可以在上方的动画方法的后面,进行属性的设置。 比如说:SetLoops [设置循环次数]

五.DoTween 事件回调

这一组方法的方法名,统一以“On”开头;可以在上方的动画方法的后面,也可以在属性设置方法的后面,进行事件回调方法的绑定。 比如说:OnComplete [当执行完毕后事件]

六.便捷式动画定义

DoTween 插件导入unity 项目中,并且在脚本内引入命名空间后。就会出现两种API: 一:“注入”到Unity 原有组件类中的api 方法。 语法格式:组件对象名.DOxxx().Setxxx().Onxxx() [对象.动画().属性().事件回调()]; 这种方式称之为“便捷方式”。 二:DoTween 的一组独立的功能类。 DoTween 工具类中的静态方法,然后使用Lambda 表达式传值的方式,来实现动画控制。 这种方式称之为“通用方式”。 演示代码:

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

/*
以下部分代码功能重复但是并未注释,
这里只做演示,理解即可,实际运行切勿复制代码
*/

public class DoTweenDemo : MonoBehaviour {

private Transform cube\_Transform;
private Image m\_Image;
private RectTransform m\_RectTransform;

void Start () {
cube\_Transform = GameObject.Find("Cube").GetComponent<Transform>();
m\_Image = GameObject.Find("Image").GetComponent<Image>();
m\_RectTransform = GameObject.Find("Image").GetComponent<RectTransform>();

CubeAnimation();
UIAnimation();
}

/// <summary>
/// UI动画.
/// </summary>
private void UIAnimation()
{
    //图片颜色动画
    m\_Image.DOColor(Color.green, 5);

    //图片透明度动画
    m\_Image.DOFade(0.2f, 2);

    //图片缩放动画
    //SetLoops循环次数为2
    m\_RectTransform.DOScale(200, 1).SetLoops(2);
    //SetLoops循环次数为2,OnComplete事件回调
    m\_RectTransform.DOScale(200, 1).SetLoops(2).OnComplete(()=>Debug.Log("图片缩放完毕."));    
}

/// <summary>
/// 模型动画.
/// </summary>
private void CubeAnimation()
{
    //DOMove.
    cube\_Transform.DOMove(new Vector3(0, 5, 0), 1);
    cube\_Transform.DOMoveX(3.5f, 2);

    //DORotate.
    cube\_Transform.DORotate(new Vector3(0, 180, 0), 2);

    //DOScale.
    cube\_Transform.DOScale(3, 1);
    cube\_Transform.DOScaleX(20, 2);
}

}