Unity插件之DOTween教程

摘要:
今天,我终于决定自己学习DOTween动画。作为众多插件的一员,DOTween动画有一定的理由成为大多数开发人员使用的动画插件。安装插件简要介绍了DoTween插件的安装。导入新的DOTween更新后,必须根据Unity版本将DOTween设置为导入/重新导入其他库。要设置DOTween,请从Tools/Demigent菜单中打开DOTween工具面板,然后从显示的面板中选择“SetupDOTween…”。在示例的最后,通过一个简单且常用的示例,我将向您展示如何使用DOTween实现数字滚动动画效果。

推荐阅读:

前言

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

安装插件

简单介绍一下DoTween插件的安装。首先你需要下载该插件,你有两种选择:

1.你可以选择去官网下载
2.你可以通过我的网盘链接下载链接:

 https://pan.baidu.com/s/1J6NjDIWzr56kmqR041o_eA 提取码: htpa 复制这段内容后打开百度网盘手机App,操作更方便哦

接下来,打开你的Unity项目,双击运行上步骤下载的插件,导入到工程。导入新的DOTween更新后,您必须设置DOTween才能根据您的Unity版本导入/重新导入其他库。

要设置DOTween,请从“Tools / Demigiant”菜单中打开DOTween 工具面板,然后从出现的面板中选择“Setup DOTween ...”。
在这里插入图片描述
在这里插入图片描述
选择setup后,你就安装完成啦!

使用

使用DOTween,需在该类/脚本中加入如下引用:

using DG.Tweening;

一切准备就绪,下面开始介绍DOTween插件的一些常用功能,一起看看吧

1.命名前缀
DO: 动作操作前缀。例如:DoMove(),DoKill()等等。
Set:动画设置操作前缀。例如:SetLoop(),SetEase()等等。
On: 响应回调事件前缀。例如: OnStart(),OnComplete()等等。
例:将向量(0,0,0)插值渐变到(10,10,0)渐变速度是由快变慢

DO

public Vector3 value = new Vector3(0, 0, 0);
 
    private void Start()
    {
         //() => value表示返回获取value值
        //x => value = x,x是通过目标值计算出来的插值,赋值给value
        //new Vector3(10, 10, 0)是目标值
        //2是到达目标值的时间
        DOTween.To(() => value, x => value = x, new Vector3(10, 10, 0),2);
    }

说明:
DOMove() 修改的是物体的世界坐标 ; DOLocalMove()修改的是物体的局部坐标

DOMoveX()只在X轴方向上移动

DOText() 文字打印效果

 text.DOText("关注微信公众号:爱上游戏开发", 2);

在这里插入图片描述

DOColor()修改颜色

 text.DOColor(Color.red, 2);

在这里插入图片描述

DOFade()透明度渐变

 text.DOFade(1, 2);

DOShakePosition() 震动效果

 Camera.main.transform.DOShakePosition(1, 0.5f);

From Tweens

 //加上from()方法,默认false,表示从目标位置移动到当前位置

  //如果为true,表示相对距离,例如cube当前位置为(2,0,0),则目标位置为(2+5,0,0)

 cube.transform.DOMoveX(5, 1).From();

Set

SetEase()设置动画曲线,点击这里,体验不同动画曲线效果。

//物体先向后一点,再向前播放 
SetEase(Ease.InBack);

SetLoops()设置循环播放次数

 cube.transform.DOMoveX(5, 1).SetEase(Ease.InCubic).SetLoops(2);

On

OnComplete()当动画结束时运行的事件函数

 cube.transform.DOMoveX(5, 1).OnComplete(() => { Debug.Log("End"); });

OnStart()当动画第一次运行时的事件函数

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实现数字滚动动画效果。

//-------------------------------
//-------------------------------
// @data2020.10.13
// @autor:爱上游戏开发
// DOTween实现数字滚动动画效果
//-------------------------------
//-------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
using DG.Tweening;

public class test : MonoBehaviour
{
    public Text text;
    private Sequence mScoreSequence;
    private int mOldScore = 0;
    private int newScore = 0;
	void Awake()
    {
        mScoreSequence = DOTween.Sequence();
        mScoreSequence.SetAutoKill(false);
    }
    void Start()
    {
    }
    void DigitalAnimation() {
        mScoreSequence.Append(DOTween.To(delegate (float value) {
            var temp = Math.Floor(value);
            text.text = temp + "";
        }, mOldScore, newScore, 0.4f));
        mOldScore = newScore;
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            newScore += 1024;
            DigitalAnimation();
        }
    }

}

效果如下:
在这里插入图片描述

免责声明:文章转载自《Unity插件之DOTween教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python遇上嵌入式:几款主流的Python开发板一览!halcon算子下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity热更新 AssetBundle

在游戏开发中,常常需要用到热更新技术。比如:一个手机游戏开发好后,用户安装到手机上。如果此时我们要更新一个新的功能,如果没有热更新,那么需要用户卸载掉手机上的游戏,然后安装新的包,这样做十分麻烦,而且容易流失用户。这个时候就需要使用热更新技术,让用户在手机上下载新的游戏功能,不用重新下载就行了。下面使用的AssetBundle,严格意义上来说不算是热更新,...

Packages window(包窗口)

使用Unity Package Manager(在Unity的顶层菜单中:Window > Package Manager)查看可以安装或已安装在Project中的软件包。此外,您可以使用此窗口查看可用的版本,以及安装,删除,禁用或更新每个项目的包。 “包”窗口显示: “ 从磁盘添加包”按钮,允许您指定外部包的位置。 包范围下拉菜单,它允许您筛选哪...

再议Unity优化

0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客《深入浅出聊Unity3D项目优化:从Draw Calls到GC》)。有时候还会发展为连一些Unity内部对象的属性访问器都要小心使用的注意事项,记得曾经有一段时间我们的项目组也会严格要求把例如trans...

Unity2019使用Gradle命令行(编译)出安卓包

在我所经历的项目组中有这几种方法来生成APK 直接在Unity生成APK,可以接入SDK 使用Unity导出Android Studio工程手动生成APK 使用Unity导出Android Studio工程命令行离线生成APK 这里记录一下我在项目组使用Android Studio出包的笔记。 使用Unity导出Android Studio工程前建议查...

Unity之Bmob云存储一

无论我们做软件还是做游戏,少不了的就是和数据打交道,对于要保存到本地的数据,我们可以采用的载体太多了。例如:txt,Xml,Sqlite,SqlServer,Mysql等等,具体使用什么那就视情况而定了。但是假如我们要在游戏中要做一个在线排行榜,我们会怎么解决呢?有些人立刻会想到把数据放到服务器上不就OK了!对的,我也是这么想的!实践才是检验真理的唯一标准...

[Unity] Unity 2019.1.14f 在Terrain中使用Paint Texture的方法

1.点击Terrain中的Paint Texture按钮2.将按钮下面的下拉菜单选择paint texture3.点击Edit Terrain Layers按钮T4.点击弹出菜单的Create Layer5.选择好后点击Terrain Layers中的素材图片即可使用画笔...