找回密码
 立即注册
查看: 500|回复: 0

Unity插件之DOTween教程

[复制链接]
发表于 2021-12-7 12:06 | 显示全部楼层 |阅读模式
推荐阅读:

    我的CSDN我的博客园QQ群:704621321我的个人博客
前言

以前做动画就是:这个动画XXX模块里用到过,复制-粘贴;这个动画好像没实现过,百度-复制-粘贴。今天,我终于下定决心自己学一下DOTween动画。DOTween动画作为众多插件中的一员,成为大部分开发者使用的动画插件是有一定道理的。
安装插件

简单介绍一下DoTween插件的安装。首先你需要下载该插件,你有两种选择:
1.你可以选择去官网下载 ;
2.你可以通过我的网盘链接下载链接:
  1. https://pan.baidu.com/s/1J6NjDIWzr56kmqR041o_eA 提取码: htpa 复制这段内容后打开百度网盘手机App,操作更方便哦
复制代码
接下来,打开你的Unity项目,双击运行上步骤下载的插件,导入到工程。导入新的DOTween更新后,您必须设置DOTween才能根据您的Unity版本导入/重新导入其他库。
要设置DOTween,请从“Tools / Demigiant”菜单中打开DOTween 工具面板,然后从出现的面板中选择“Setup DOTween …”。



选择setup后,你就安装完成啦!
使用

使用DOTween,需在该类/脚本中加入如下引用:
  1. using DG.Tweening;
复制代码
一切准备就绪,下面开始介绍DOTween插件的一些常用功能,一起看看吧
1.命名前缀
DO: 动作操作前缀。例如:DoMove(),DoKill()等等。
Set:动画设置操作前缀。例如:SetLoop(),SetEase()等等。
On: 响应回调事件前缀。例如: OnStart(),OnComplete()等等。
例:将向量(0,0,0)插值渐变到(10,10,0)渐变速度是由快变慢
DO
  1. public Vector3 value =newVector3(0,0,0);privatevoidStart(){//() => value表示返回获取value值//x => value = x,x是通过目标值计算出来的插值,赋值给value//new Vector3(10, 10, 0)是目标值//2是到达目标值的时间
  2.         DOTween.To(()=> value, x => value = x,newVector3(10,10,0),2);}
复制代码
说明:
DOMove() 修改的是物体的世界坐标 ; DOLocalMove()修改的是物体的局部坐标
DOMoveX()只在X轴方向上移动
DOText() 文字打印效果
  1. text.DOText("关注微信公众号:爱上游戏开发",2);
复制代码


DOColor()修改颜色
  1. text.DOColor(Color.red,2);
复制代码


DOFade()透明度渐变
  1. text.DOFade(1,2);
复制代码
DOShakePosition() 震动效果
  1. Camera.main.transform.DOShakePosition(1,0.5f);
复制代码
From Tweens
  1. //加上from()方法,默认false,表示从目标位置移动到当前位置//如果为true,表示相对距离,例如cube当前位置为(2,0,0),则目标位置为(2+5,0,0)
  2. cube.transform.DOMoveX(5,1).From();
复制代码
Set

SetEase()设置动画曲线,点击这里,体验不同动画曲线效果。
  1. //物体先向后一点,再向前播放 SetEase(Ease.InBack);
复制代码
SetLoops()设置循环播放次数
  1. cube.transform.DOMoveX(5,1).SetEase(Ease.InCubic).SetLoops(2);
复制代码
On

OnComplete()当动画结束时运行的事件函数
  1. cube.transform.DOMoveX(5,1).OnComplete(()=>{ Debug.Log("End");});
复制代码
OnStart()当动画第一次运行时的事件函数
  1. cube.transform.DOMoveX(5,1).OnStart(()=>{ Debug.Log("Start");});
复制代码
Sequence

Sequence:相当于一个Tweener的链表,可以通过执行一个Sequence来执行一串Tweener,使用Sequence类可以方便的组织Tweens来制作复杂的过渡动画。
Append(Tween tween):在Sequence的最后添加一个tween。
AppendCallback(TweenCallback callback):在Sequence的最后添加一个回调函数。
AppendInterval(float interval):在Sequence的最后添加一段时间间隔。
Insert(float atPosition, Tween tween):在给定的时间位置上放置一个tween,可以实现同时播放多个tween的效果,而不是一个接着一个播放。
InsertCallback(float atPosition, TweenCallback callback): 在给定的时间位置上放置一个回调函数。
Join(Tween tween):在Sequence的最后一个tween的开始处放置一个tween。
Prepend(Tween tween):在Sequence开始处插入一个tween,原先的内容根据时间往后移。
PrependCallback(TweenCallback callback): 在Sequence开始处插入一个回调函数。
PrependInterval(float interval) :在Sequence开始处插入一段时间间隔,原先的内容根据时间往后移。
例子

最后,通过一个简单常用的例子,给大家演示一下使用DOTween实现数字滚动动画效果。
  1. //-------------------------------//-------------------------------// @data2020.10.13// @autor:爱上游戏开发// DOTween实现数字滚动动画效果//-------------------------------//-------------------------------
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using System;
  7. using DG.Tweening;publicclasstest: MonoBehaviour
  8. {public Text text;private Sequence mScoreSequence;privateint mOldScore =0;privateint newScore =0;voidAwake(){
  9.         mScoreSequence = DOTween.Sequence();
  10.         mScoreSequence.SetAutoKill(false);}voidStart(){}voidDigitalAnimation(){
  11.         mScoreSequence.Append(DOTween.To(delegate (float value){
  12.             var temp = Math.Floor(value);
  13.             text.text = temp +"";}, mOldScore, newScore,0.4f));
  14.         mOldScore = newScore;}voidUpdate(){if(Input.GetKeyDown(KeyCode.A)){
  15.             newScore +=1024;DigitalAnimation();}}}
复制代码
效果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-15 04:22 , Processed in 0.142050 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表