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