使用总结
01 安装插
下载地址
http://dotween.demigiant.com/download.php
02 引入包
using DG.Tweening;
03 常用代码总结
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using System;
public class Demo : MonoBehaviour
{
public Button moveButton;
public Button rotateButton;
public Button scaleButton;
public Button punchPositionButton;
public Button punchRotateButton;
public Button punchScaleButton;
public Button shakeButton;
public Button blendButton;
public Button colorButton;
public Button alpha0Button;
public Button textOneByOneButton;
public Button textOneByOneButton2;
public Button cameraShakeButton;
public Button sequenceButton;
public Button setParaButton;
public Button relativeChangeButton;
public Button animationCallBackButton;
public Button animationControlButton;
public Button animationPauseButton;
public Button animationResumeButton;
public Button pathAnimationButton;
public Image star;
public Text text;
public string textString = "";
void Start()
{
moveButton.onClick.AddListener(() =>
{
print("移动");
//第1个参数,移动到的目标位置。DOMove移动的坐标是世界坐标
//第2个参数,动画的持续时间
//star.transform.DOMove(new Vector2(-500, 0), 1);
//第1个参数,移动到的目标位置
//第2个参数,动画的持续时间。DOLocalMove移动的坐标是锚点坐标anchoredPosition(注意这里不是局部坐标localPosition)
star.transform.DOLocalMove(new Vector2(-500, 0), 1);
}
);
rotateButton.onClick.AddListener(() =>
{
print("旋转");
//第1个参数,旋转的角度
//第2个参数,动画的持续时间
star.transform.DORotate(new Vector3(0, 0, 90), 1);
});
scaleButton.onClick.AddListener(() =>
{
print("缩放");
//第1个参数,缩放的比例大小,默认比例是1
//第2个参数,动画的持续时间
star.transform.DOScale(new Vector3(3, 3, 3), 1);
});
punchPositionButton.onClick.AddListener(() =>
{
print("移动晃动");
//第1个参数 移动的距离
//第2个参数 表示动画持续时间
//第3个参数 晃动次数
//移动偏移晃动回到原来位置
star.transform.DOPunchPosition(new Vector3(0, -20, 0), 1, 5);
});
punchRotateButton.onClick.AddListener(() =>
{
print("旋转晃动");
//第1个参数 旋转的角度
//第2个参数 表示动画持续时间
//第3个参数 晃动次数
//旋转晃动回到原来位置
star.transform.DOPunchRotation(new Vector3(0, 0, 90), 1, 5);
});
punchScaleButton.onClick.AddListener(() =>
{
print("比例晃动");
//第1个参数 晃动比例,这里即便设new Vector3(1, 1, 1),也会一定程度的晃动
//第2个参数 表示动画持续时间
//第3个参数 晃动次数
//比例晃动回到原来位置
star.transform.DOPunchScale(new Vector3(1, 1, 1), 1, 5);
});
shakeButton.onClick.AddListener(() =>
{
print("震动");
//第1个参数 持续时间
//第2个参数 震动幅度, 使用Vector3可以选择每个轴向不同的幅度
//第3个参数 震动次数
//第4个参数 改变震动方向的随机值(范围:0~180)
//第5个参数 最后是否移动回原本位置
star.transform.DOShakePosition(1, 10, 10, 50, true);
});
blendButton.onClick.AddListener(() =>
{
print("混合动画");
//使用混合动画可以使两个动画在同一时间内同时进行。
//混合动画,混合移动和旋转动画
star.transform.DOBlendableLocalRotateBy(new Vector3(0, 0, 180), 1);
//DOBlendableLocalMoveBy是锚点坐标,DOBlendableMoveBy是世界坐标
star.transform.DOBlendableLocalMoveBy(new Vector2(-500, 0), 1);
//star.transform.DOBlendableMoveBy(new Vector2(-500, 0), 1);
});
colorButton.onClick.AddListener(() =>
{
print("改变颜色");
//修改颜色
//第1个参数,颜色数值
//第2个参数,时间长度,单位秒
star.DOColor(new Color(255 / 255, 0 / 255, 0 / 255), 1);
});
alpha0Button.onClick.AddListener(() =>
{
print("透明度改变");
//透明度改变
//第1个参数,透明度,范围0-1
//第2个参数,时间长度,单位秒
star.DOFade(0, 1);
});
textOneByOneButton.onClick.AddListener(() =>
{
textString = "0123456789012345";
print("文字逐个显示");
//文字逐个显示
//第1个参数,文字
//第2个参数,时间长度,单位秒
//SetEase(Ease.Linear)作用:显示更加顺滑
text.DOText(textString, 1).SetEase(Ease.Linear);
});
//队列动画 - 重点使用
sequenceButton.onClick.AddListener(() =>
{
print("队列动画");
Sequence sequence = DOTween.Sequence();
//第0秒插入一个动画
sequence.Insert(0, star.transform.DOScale(2, 1));
//第0秒插入一个动画
sequence.Insert(0, star.transform.DORotate(new Vector3(0, 0, 90), 1));
//第1秒插入一个动画
sequence.Insert(1, star.transform.DOLocalMove(new Vector2(-500, 0), 2));
//第1秒插入一个动画
sequence.Insert(1, star.transform.DORotate(new Vector3(0, 0, 180), 2));
sequence.InsertCallback(0.5f, () =>
{
print("第0.5秒触发事件");
});
sequence.InsertCallback(1.5f, () =>
{
print("第1.5秒触发事件");
});
});
//设置常用参数
setParaButton.onClick.AddListener(() =>
{
//模拟一个轮子在一直滚动
//链式写法-通过参数控制
//SetLoops(-1),-1代表无限循环
//SetDelay(1)代表延迟一秒执行
//SetRelative(true)代表动画变为增量动画
//SetEase(Ease.Linear)表示动画会循环时,接缝会很顺滑
star.transform.DORotate(new Vector3(0, 0, 360), 1).SetLoops(-1).SetDelay(1).SetRelative(true).SetEase(Ease.Linear);
});
//设置为增量动画
relativeChangeButton.onClick.AddListener(() =>
{
//SetRelative参数
//为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
//为falese,传入的就是目标值,即传入值 = 目标值
//设置移动为增量移动
star.transform.DOLocalMove(new Vector2(-50, 0), 1).SetRelative(true);
//设置旋转的角度为增量旋转角度
star.transform.DORotate(new Vector3(0, 0, 90), 1).SetRelative(true);
});
//调用完成回调
//OnComplete 动画完成回调
//OnStepComplete 完成单个循环周期时触发
//OnStart 开始时
animationCallBackButton.onClick.AddListener(() =>
{
star.transform.DOLocalMove(new Vector2(-50, 0), 1).OnComplete(() => { print("播放完成时"); });
});
//暂停继续重播控制,只能处理tranform.后面的API,像star.DOColor控制不了
//1)播放,继续播放
//transform.DOPlay();
//2)暂停
//transform.DOPause();
//3)重播
//transform.DORestart();
animationControlButton.onClick.AddListener(() =>
{
star.transform.DORotate(new Vector3(0, 0, 360), 1).SetRelative(true).SetEase(Ease.Linear).OnComplete(() => { print("播放完成时"); star.transform.DORestart(); });
});
//暂停
animationPauseButton.onClick.AddListener(() =>
{
star.transform.DOPause();
});
//继续播放
animationResumeButton.onClick.AddListener(() =>
{
star.transform.DOPlay();
});
//轨迹弧线动画
pathAnimationButton.onClick.AddListener(() =>
{
//设置的轨迹点数
Vector3[] m_Paths = new Vector3[4];
m_Paths[0] = new Vector3(0, -300, 0);
m_Paths[1] = new Vector3(275, -250, 0);
m_Paths[2] = new Vector3(530, -120, 0);
m_Paths[3] = new Vector3(730, 75, 0);
//第1个参数:轨迹点数组。
//第2个参数:动画时间。
//第3个参数:轨迹类型。PathType.CatmullRom代表曲线,PathType.CubicBezier贝塞尔曲线,PathType.Linear代表直线。经过实践,曲线使用CatmullRom比较好。
//第4个参数:轨迹类型的具体类型。PathMode.Sidescroller2D代表2d弯曲路径,PathMode.Ignore代表忽略路径模式,PathMode.Full3D代表常规3d浏览模式。
//PathMode.TopDown2D代表从上向下路径。经过实践,曲线使用PathMode.Sidescroller2D比较好
//SetLookAt,朝向。范围0-1,0代表最后改朝向。1代表一开始就改朝向。0-1代表这个范围,一般设0.8比较好。
//SetEase(Ease.Linear) 动画更顺滑。
star.transform.DOLocalPath(m_Paths, 1f, PathType.CatmullRom, PathMode.Sidescroller2D).SetLookAt(0.8f).SetEase(Ease.Linear);
});
}
}
官方文档
http://dotween.demigiant.com/documentation.php
资料&教程
Dotween API详解及动效插件 免费
http://www.sikiedu.com/course/328/tasks
http://www.sikiedu.com/course/328/task/18838/show
课程相关资料
Dotween常用方法详解
https://blog.csdn.net/zcaixzy5211314/article/details/84886663
Dotween Path 路径动画使用方法详解
https://blog.csdn.net/zcaixzy5211314/article/details/84988535
MoveEffectTool工具Github地址
https://github.com/BlueMonk1107/MoveEffectTool
Dotween Ease效果演示地址
http://robertpenner.com/easing/easing_demo.html
Unity-Dotween插件 需要是收费会员 或收费$1
https://edu.51cto.com/course/22622.html
Unity专题-动画插件DOTween $12
https://ke.qq.com/course/270869
DOTween插件API详解及案例实现 $25
https://ke.qq.com/course/379326
UnityDotween动画 $4.8
https://edu.51cto.com/course/23011.html



