DOTween插件学习

脚本1

挂在场景物体上,使物体移动的方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//using DoTween的命名空间
public class test_one : MonoBehaviour {
    public Vector3 tweenV3 = new Vector3(0, 0, 0);
   
   
    void Start ()
    {
        tweenV3= transform.position;
        //DOTween里的To方法:
        //对变量进行移动,固定写法,前两个参数是固定的,指向变量,第三个参数是要移到的位置,第四个是移动所用的时间
        DOTween.To(() => tweenV3, x => tweenV3 = x, new Vector3(0, 0, 0), 5);
       }
       
       
       void Update () {
       
        transform.position = tweenV3;//给物体位置赋值,进行移动
    }
}

脚本2

挂在UI上,使UI移动的方法

public RectTransform rectTransform;

private void Start()
{
   rectTransform.DOLocalMove(new Vector3(0, 0, 0), 1);//使用此方法可以使UI图片在一秒内从外面移动到画布中心点(DOLocalMove是自身坐标,DOMove是世界坐标)
}

脚本3

点击button,使图片在屏幕外面移动到屏幕中间, 再点击的话再从屏幕内移出去 (此脚本挂在要移动的图片上,并给button添加事件)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//using DoTween的命名空间
public class test_one : MonoBehaviour {
 
    public RectTransform rectTransform;//图片
    bool IsInScreen = false;//判断图片是否在屏幕内
    void Start()
    {
        //使用此方法可以使UI图片在一秒内从外面移动到画布中心点(DOLocalMove是自身坐标,DOMove是世界坐标)
        //Tweener对象保存每个创建出来的动画信息,每次调用do方法都会创建一个tweener对象,所以为了不消耗内存,在start里创建一次,后面就不用创建了
        Tweener tweener = rectTransform.DOLocalMove(new Vector3(0, 0, 0), 0.3f);
        tweener.SetAutoKill(false);//动画每次播放完会自动销毁,所以在start里创建的话不需要销毁,就把它设置为false
        tweener.Pause();//在没有调用前先让它暂停
    }
   
    public void Onclick()
    {
        if (IsInScreen == false)
        {
            rectTransform.DOPlayForward();//动画前放。点击按钮时,开始播放动画,注意这里不能使用DOPlay,因为DOPlay只调用一次
            IsInScreen = true;
        }
        else
        {
            rectTransform.DOPlayBackwards();//动画倒放,如果在屏幕里就让它出去
            IsInScreen = false;
        }
    }
}

其他相关用法

//默认是从自身位置移动到目标X位置,后面加上From()后就成了从目标位置移动到自身位置
transform.DOLocalMoveX5, 1).From();
void Start () {
    Tweener tw= transform.DOLocalMoveX(5, 1);从自身位置移动到目标X位置
    tw.SetEase(Ease.OutBounce);设置移动曲线方式,Ease是DOTween自带的枚举,里面有各种各样的曲线,可以自行挑选合适的来使用
    tw.OnComplete(OnTween);DOTween自带动画事件函数,会在动画播放完以后调用(官方文档还有其他几种生命周期函数)
}
void OnTween()
{
    Debug.Log("动画播放完成了");
}

3.
文字的动画效果,使用以下方法会有逐字显示的效果(可以做一些对话的显示,或者关卡名的显示)

Text text;
      
void Start () {
  text.DOText("xxxxxxxxxxx", 2);//第一个参数是要显示的字符串,第二个参数是所用时间
}

4.

屏幕震动效果

transform.DOShakePosition(1);//DOTween自带的使相机自身随机抖动的方法,只写1的话就是抖动1秒,后面可以加new Vector3()参数,分别控制相机的X,Y,Z轴的抖动距离,例如: transform.DOShakePosition(1,new Vector3(1,1,0));

颜色渐变效果(主要用在UI上,物体不行):

image.DOColor(Color.blue, 2);//第一个是颜色,第二个是过度的时间,Text文字也是一样的方式
透明度渐变效果:
image.DOFade(1, 3);//第一个参数是透明度值(测试时可以在场景中把图片透明度设置为0),第二个参数是所用时间