DOTween的基本使用方法

DoTween

DoTween从何而来

在NGUI中提供了UITween 来支持UI的动画编写,极度降低了代码的复杂度,然而,我们的UGUI中并没有类似UITween的功能进行支撑,所以我们用到了第三方插件 DoTween。

在我们Unity官方的UGUI的Demo中UI的动画是使用Animator来制作的,试想一下,如果我们的UI如果需要动画效果,那么就需要使用 AnimationController,除此之外,还需要去编辑动画,如果数量不多

的UI可以这样,如果UI过多的需要动画,那么工作量就有些庞大了。所以现在市面上绝大多数使用UGUI开发的公司都使用了DoTween来辅助完成UI动画的设计,当然,DoTween也可以应用到3D物体上

记得大概2014年的时候就有了这款插件,这款插件最开始的时候就是应用到3D游戏物体上的动画,后来才被扩展到UGUI中

主要的方法(就是最常用的):

1.以DO开头的方法:就是补间动画的方法。例如:transform.DOMoveX(100,1)

2.以Set开头的方法:设置补间动画的一些属性。例如:myTween.SetLoops(4, LoopType.Yoyo)

3.以On开头的方法:补间动画的回调方法。例如:myTween.OnStart(myStartFunction)

1.导入插件:

插件我们在官网中可以直接下载,而且是免费的,直接点击下载导入就可:![](https://img-blog.csdnimg.cn/20201110182416179.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUxMTg3MQ==,size_16,color_FFFFFF,t_70#pic_center)

在这里插入图片描述

这里点击这个就行:
在这里插入图片描述

后面会出现一个DoTween可以控制的一些方法:直接点击Apply
在这里插入图片描述

然后呢,我们随便建立一个脚本,如下:在这里插入图片描述

这个时候我们是不能用DoTween的,要在开头加一个引用:Using DG.Tweening

在这里插入图片描述

之后就可以使用Do Tween的方法了;

这里先用一些简单的例子来使用DOTwenn的方法:

public class Text : MonoBehaviour
{
    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);
        
    }

    // Update is called once per frame
    void Update()
    {
        //value的值每帧赋值给物体,来达到使物体运动的效果
        transform.position = value;
    }
}

这些代码复制进去,然后把我们创建的脚本,放到相应的物体上

在这里插入图片描述

点击运行,这时候我们就可以看到物体2秒内移动的效果了,

这是To的方法移动

然后我们使用直接改变物体transfrom的方法使得物体移动,比如我让方块从0,0,0 =>10,10,10

先把之前代码删掉,然后开始,我们只需要把别的代码删掉,加一行代码就够了,然后点击运行就会看到

public class Text : MonoBehaviour
{
    

    private void Start()
    {
        //我们脚本赋值在哪个物体上,这就是哪个物体的transfrom(也就是位置)
        //new Vector3(10, 10, 10)这是物体要移动的到的位置
        //2是两秒之后移动到那个地方去
        transform.DOLocalMove(new Vector3(10, 10, 10), 2);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

另外 还有当我在这个后面加上From()时,就是倒放效果

transform.DOLocalMove(new Vector3(10, 10, 10), 2).From();//倒放,也就是从目标位置移动到当前位置

这里我们还可以设置动画曲线:然我们达到缓动或者各种曲线的效果

比如·:

transform.DOLocalMove(new Vector3(10, 10, 10), 2).SetEase(Ease.InOutFlash);

另外,我们不仅可以控制物体的移动,还有控制物体的大小,旋转,都是OK的;

代码也大都一样:

    transform.DORotate(new Vector3(90, 90, 90), 2f);
    transform.DOScale(new Vector3(2, 2, 2), 2);

然后还有DoText:文字打印效果

text.DOText(“云想衣裳花想容,春风拂槛露华浓”, 2);

DOColor()修改颜色

text.DOColor(Color.red, 2);

DOFade()透明度渐变

text.DOFade(1, 2);

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//这里注意要加命名空间
using DG.Tweening;

public class Test : MonoBehaviour
{
    //定义Text的字段
    private Text text;
    
    private void Start()
    {
        //在我赋值的物体上找到Text这个组件
         text = gameObject.GetComponent<Text>();
        //文字打印机效果
        text.DOText("xxxxxxxxxxx", 4);
        //文字颜色渐变
        text.DOColor(Color.red, 4);
        //文字透明度渐变
        text.DOFade(1, 4);
    }

 
}

创建一个Text在这里插入图片描述

然后运行就可以看到效果了

DOShakePosition() 震动效果

    //Camera.main是主摄像机
    //1,是震动频率
    //0.5f是时间
    Camera.main.transform.DOShakePosition(1, 0.5f);

SetLoops()设置循环播放次数

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

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

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

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

cube.transform.DOMoveX(5, 1).OnStart(() => { Debug.Log(“Start”); });

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值