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),第二个参数是所用时间
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!