DOTween官网

DG.Tweening.Ease枚举详解

2019.12.12补充:

问题:当前dotween动画没播放完,便再次播放有冲突的操作,如连续多次播放、正播、倒播,导致显示不正常或报错。

解决方法:在每次开始执行播放动画时,先加上下面对应类似的杀死进程代码,就OK了


  1. transform.DOKill();
  2. transform.RectTransform().DOKill();

让DOTweenAnimation忽略Time.timeScale = 0的影响:

GetComponent<DOTweenAnimation>().tween.SetUpdate(true);

2019.06.25更新:

DOTween动态添加DOTweenAnimation的方法:

1、方法1

在实际测试,发现有时莫名失效。建议采用预制体形式。


  1. using DG.Tweening;
  2. using DG.Tweening.Core;
  3. DOTweenAnimation da= ob.gameObject.AddComponent<DOTweenAnimation>();
  4. da.animationType = DOTweenAnimationType.LocalRotate;
  5. da.easeType = Ease.Linear;
  6. da.duration = 0.3f;
  7. da.loops = -1;
  8. da.endValueV3 = new Vector3(0, 50, 0);

方法2

实现让该物体不停旋转。

  • 默认的第三个参数是RotateMode.Fast,也就是所有的旋转操作都不能超过360°,如果超过旋转就无效,所以现在采用RotateMode.FastBeyond360

  1. icon.transform.DOLocalRotate(new Vector3(0, 0, -360), 2, RotateMode.FastBeyond360)
  2. .SetEase(Ease.Linear).SetLoops(-1, LoopType.Restart).Play();

1、DOTween.To()

将某点在一定时间内移动到某点


  1. using DG.Tweening;
  2. Vector3 myvalue = new Vector3(0, 0, 0);
  3. DOTween.To(() => myvalue, x => myvalue = x, new Vector3(10, 10, 10), 2);
  4. 要移动的初始值 目标值 时间

2、DOMove()

在1s内将目标物体从当前位置移动到目标位置


  1. transform.DOMove(new Vector3(1, 1, 1), 1);
  2. transform.DOLocalMove(new Vector3(1, 1, 1), 1);

3、DOMoveX()、DOMoveY()、DOMoveZ()

从当前位置延X/Y/Z方向,移动到目标位置5

transform.DOMoveX(5, 1);

4、From()

从目标位置,移动到当前位置


  1. 绝对位置,若当前坐标(1,0,0),即从5运动到1
  2. transform.DOMoveX(5, 1).From();
  3. transform.DOMoveX(5, 1).From(false);
  4. 相对位置,若当前坐标(1,0,0),即从6运动到1(6-1=5,相对位移5)
  5. transform.DOMoveX(5, 1).From(true);

5、Pause()、DOPlay()、DOPlayForward()、DOPlayBackwards()、DORestart()

动画暂停、动画播放、动画向前播放、动画倒放


  1. //DOTween播放会生成动画,动画保存在Tweener信息中,默认动画播放完会被销毁,要想倒放,必须设为不被销毁
  2. //tweener也会播放动画
  3. Tweener tweener= transform.DOLocalMove(new Vector3(1, 1, 1), 1);
  4. tweener.SetAutoKill(false);
  5. //暂停动画
  6. tweener.Pause();
  7. //播放动画,只播放一次,再次调用不可播放
  8. transform.DOPlay();
  9. //向前播放动画
  10. transform.DOPlayForward();
  11. //动画倒放
  12. transform.DOPlayBackwards();
  13. //重新播放动画:若用的可视化编辑,需取消AutoKill
  14. transform.DORestart();

6、SetEase()

设置动画曲线,即动画运动方式(类似设置PPT动画的出现效果)


  1. Tweener tweener = transform.DOLocalMoveX(0, 5);
  2. tweener.SetEase(Ease.InBounce);

7、SetLoops

设置动画播放次数,下为播放两次动画


  1. Tweener tweener = transform.DOLocalMoveX(0, 5);
  2. tweener.SetLoops(2);

8、事件函数

动画播放完成事件函数、


  1. Tweener tweener = transform.DOLocalMoveX(0, 5);
  2. //动画播放完成调用事件函数
  3. tweener.OnComplete(你的方法);
  4. //动画销毁调用事件函数
  5. tweener.OnKill(你的方法);
  6. //动画播放时调用事件函数(一直调用)
  7. tweener.OnPlay(你的方法);
  8. //动画暂停时调用事件函数
  9. tweener.OnPause(你的方法);
  10. //动画重置时调用事件函数
  11. tweener.OnRewind(你的方法);
  12. //动画开始播放时调用事件函数
  13. tweener.OnStart(你的方法);
  14. //动画播放时调用事件函数(一次)
  15. tweener.OnPlay(你的方法);

9、DOText    文本动画

若文本框内无文字,在3s内逐字显示文字。

若有文字,则逐字覆盖掉原先文字,显示新文字

GetComponent<Text>().DOText("接下来我们进入第二篇章", 3);

10、DOShakePosition    震动效果

挂载在摄像机上面


  1. //持续时间,其余默认
  2. transform.DOShakePosition(1);
  3. //持续时间、强度(下为只在X、Y方向上震动)
  4. transform.DOShakePosition(1,new Vector3(3,3,0));

11、DOColor    改变颜色

在2s中将原本颜色变为红色

GetComponent<Text>().DOColor(Color.red, 2);

12、DOFade    改变透明度

文字透明度会在3s内从0变为1

GetComponent<Text>().DOFade(1, 3);

13、可视化动画编辑

该组件在DOTween Pro插件里面

可使用代码通过控制ID的方式来控制动画的播放

下载地址:下载


  1. using UnityEngine;
  2. using DG.Tweening;
  3. public class UIController : MonoBehaviour {
  4. DOTweenAnimation tweenAnimation;
  5. void Start () {
  6. tweenAnimation = GetComponent<DOTweenAnimation>();
  7. }
  8. public void OnClick()
  9. {
  10. tweenAnimation.DOPlayBackwards();
  11. }
  12. }

14、可视化路径编辑

该组件在DOTween Pro插件里面

下载地址:下载

Shift+Ctrl:添加路径点

Shift+Alt:删除路径点

Duration:时长

Delay:延迟时间

Ease:运动模式

Loops:播放次数,-1为循环播放,0为播放一次

Path Type:Linner/Catmull Rom,Linner,线性;Catmull Rom给路径做圆滑处理

Close Path:将起点与终点连接,围成一个圈

Local Movement:局部坐标下移动

Orientation:朝向。To Path,游戏物体朝向路径运动;Look At Transform;Look At Position

Relative:勾选后,选择游戏物体,路径可整体移动

Show Indexes:是否显示路径索引

Handles Type:Free/Full,Full,每个点显示三坐标

Reset Path:删除所有点,重置路径

代码控制:

该组件自带控制方法,直接调用即可,当然也可在Unity通过Button拖拽方式直接控制


  1. using UnityEngine;
  2. using DG.Tweening;
  3. public class UIController : MonoBehaviour {
  4. DOTweenPath tweenAnimation;
  5. void Start () {
  6. tweenAnimation = GetComponent<DOTweenPath>();
  7. }
  8. public void OnClick()
  9. {
  10. //开始播放
  11. tweenAnimation.DOPlay();
  12. //运动开关:点击一次,继续开始播放,再点击一次,在当前位置暂停
  13. tweenAnimation.DOTogglePause();
  14. //重新播放动画
  15. tweenAnimation.DORestart();
  16. //杀死动画,此后无法再播放动画
  17. tweenAnimation.DOKill();
  18. }
  19. }

Unity_DOTween的更多相关文章

随机推荐

  1. 『动善时』JMeter基础 — 16、JMeter配置元件【HTTP信息头管理器】

    目录 1.用于演示的项目说明 2.测试计划内包含的元件 3.HTTP请求界面内容 4.查看脚本执行结果 5.添加请求头信息(HTTP信息头管理器) 6.优先级说明 7.补充:常见请求头信息 JMete ...

  2. 02、SpringBoot2入门

    1.系统要求 Java 8 & 兼容java14 . Maven 3.3+ idea 2019.1.2 1.1.maven设置 <mirrors> <mirror> & ...

  3. COS 数据湖最佳实践:基于 Serverless 架构的入湖方案

    01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...

  4. 强哥HTML学习笔记

    html 浏览器的选择:1.火狐2.ie3.chrome4.mac5.opera 安装两款插件:1.firebug2.web develope html页面元素:1.doctype2.htmlhead ...

  5. 2.socket编程

    套接字:进行网络通信的一种手段socket 1.流式套接字(SOCK_STREAM):传输层基于tcp协议进行通信 2.数据报套接字(SOCK_DGRAM):传输层基于udp协议进行通信 3.原始套接 ...

  6. MyBatis 延迟加载(十四)

    什么是延迟加载 延迟加载又叫懒加载,也叫按需加载,也就是说先加载主表信息,需要的时候,再去加载从表信息.代码中有查询语句,当执行到查询语句时,并不是马上去数据库中查询,而是根据设置的延迟策略将查询向后 ...

  7. 统计行数、文件夹个数、文件个数的相关shell命令

    极客君最近做项目,刚好遇到需要统计一些sql文件数量的问题,用到一些实用的shell命令,记录下来,以后万一还能用上呢? 如果在终端不打开文件看到一共多少行,则可以使用wc命令来实现: wc -l [ ...

  8. Java并发:ThreadLocal的简单介绍

    作者:汤圆 个人博客:javalover.cc 前言 前面在线程的安全性中介绍过全局变量(成员变量)和局部变量(方法或代码块内的变量),前者在多线程中是不安全的,需要加锁等机制来确保安全,后者是线程安 ...

  9. VMware Tanzu Kubernetes Grid 1.3 发布 - VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版

    Tanzu Kubernetes 集群是由 VMware 构建.签名和支持的开源 Kubernetes 容器编排平台的完整分发版.可以通过使用 Tanzu Kubernetes Grid 服务在主管集 ...

  10. skynet debug console 使用

    预读 关于如何使用 skynet 可以参考 wiki 文档 更多实战内容见 https://www.lanqiao.cn/courses/2770 优惠码:2CZ2UA5u 环境测试搭建 使用示例代码 ...