Unity学习笔记:DoTween插件的应用

60 篇文章 2 订阅
1 篇文章 0 订阅

在Asset Store 中 搜索DoTween并下载

代码调用前先引入命名空间:

using DG.Tweening;

 

通用方法:


DOTween.PlayAll();

让所有暂停的DoTween动画播放

DOTween.RestartAll();

让所有DoTween动画重置

.SetAutoKill(false)

加在DoTween方法后面,让这个动画在播放完成后不删除自身

.SetRelative()

加在DoTween方法后面,让动画变为从基础上增加

.OnStepComplete(()=> { Debug.Log("完成目标"); }) 

加在DoTween方法后面,渐变完成时执行一个逻辑,可以传入方法

.SetEase(Ease.Linear)

加在DoTween方法后面,让渐变方式变为匀速,参数可以传其他枚举,其他枚举作用暂不明

.SetLoops(-1, LoopType)

加在DoTween方法后面,让渐变循环执行,参数一用处暂不明,参数二为枚举:

LoopType.Restart

渐变达到最后之后,立刻重新开始

LoopType.Yoyo

渐变达到最后之后,在由最后渐变回最开始

LoopType.Incremental

根据每帧渐变变化的速率,没有终点的不断继续渐变


单次移动位置:


transform.DOMove(new Vector3(0,4,0), 2);

用一个物体的transform属性调用DOMove方法进行逐渐移动到一个位置,其中第一个参数是移动到的位置,第二个参数是移动到这个位置所需要的时间,时间越长移动越慢。

transform.DOMove(new Vector3(0,4,0), 2).From();

这个方法对比上一个最后多传入了一个.From(),物体会以0,4,0坐标作为起点,移动回自己现在所在的位置。

transform.DOMove(new Vector3(4,4,0), 2).SetRelative();

多了.SetRelative(),移动到的位置由参数变成了(参数+自身坐标)。


持续移动位置:


Tweener tween;

声明变量,这个变量能够储存一个transfrom调用Domove返回的结果

tween = transform.DOMove(target.position, 3).SetAutoKill(false);

方法是3秒移动到target的位置,.SetAutoKill(false)如果不加的话后面调用赋予新位置会报错

tween.ChangeEndValue(target.position, true).Restart();

给保存的变量设定终点,重点为target.position,第二个参数如果是true就是从当前位置前往新位置,false就是声明变量是的位置前往目标位置,加入.Restart()是立刻开始移动。


旋转:


gameobject.DORotate(new Vector3(45, 45, 45), 2);

物体在2秒内角度逐渐变换到参数一


材质相关:


gameObject.GetComponent<Renderer>().material.DOColor(Color.red, 2);

方法作用是将一个材质由自己的颜色逐渐变成第一个参数的颜色,第二个参数为时间,时间越长变化速度越慢

gameObject.GetComponent<Renderer>().material.DOColor(Color.red, 2).SetLoops(-1, LoopType.Yoyo);

对比上面方法加入了一个SetLoops(),效果是让材质颜色循环变换,第一个参数固定为负数,是颜色变回来的时间

第二个参数为枚举:

LoopType.Restart:颜色由颜色一缓慢变为颜色二后,瞬间变回颜色一,然后再缓慢变回颜色二。

LoopType.Yoyo:颜色由颜色一缓慢变为颜色二后,再缓慢由颜色二变回颜色一,再缓慢由颜色一变回颜色二。

LoopType.Incremental:在原基础上增加,不断循环让红色变得更红。

Tween colorTween, emissionTween, offsetTween;

声明变量,这个变量可以用来保存DoTween执行的方法,并为其添加新要素

colorTween = mat.DOColor(toColor, 1).SetLoops(-1, LoopType.Yoyo).Pause();

后面加上.Pause()可以让循环开始是暂停的。

colorTween.TogglePause();

让颜色循环暂停或开始

emissionTween = mat.DOColor(new Color(0, 0, 0, 0), "_EmissionColor", 1).SetLoops(-1, LoopType.Yoyo).Pause();

相比上面的方法多了一个第二个参数,第二个参数是位图的名字,材质位图将不断闪烁(第一个参数不要动)

emissionTween.TogglePause();

将位图的闪烁暂停或开始

offsetTween = mat.DOOffset(new Vector2(10, 10), 1);

第一个参数是UV的目标数值,第二个是到达这个数值需要的时间,比如现在的参数就是在1秒之内将UV到达10,10

 

offsetTween = mat.DOOffset(new Vector2(1, 1), 1).SetLoops(-1, LoopType.Incremental).Pause()

.SetLoops开始循环,第一个参数为变回去的时间,.Pause()为开始时暂停

第二个参数为枚举:

LoopType.Restart:UV由0缓慢变为1后,瞬间变回0,然后再缓慢变回1。

LoopType.Yoyo:UV由0缓慢变为1后,再缓慢由1变回0,再缓慢由0变回1。

LoopType.Incremental:UV将按照之前的比率无限增长。

offsetTween = mat.DOOffset(new Vector2(1, 1), 1).SetLoops(-1, LoopType.Incremental).Pause().SetEase(Ease.Linear);

.SetEase(Ease.Linear) 为让UV持续匀速改变,不传效果会很怪,也可以传入别的枚举,别的枚举效果不明。

offsetTween.TogglePause();

让UV循环暂停或开始


让一个物体循环在一个路径上移动


Tween path;

声明变量,这个变量可以用来保存DoTween执行的方法,并为其添加新要素

Tween path = gameobject.DOPath(Vector3[], 4, PathType.CatmullRom)

让自身随着传入的第一个参数的路径点集合移动,第二个参数为移动时间,第三个参数为枚举,最好固定为PathType.CatmullRom。

Tween t = target.DOPath(waypoints, 4, PathType.CatmullRom).SetOptions(true)

SetOptions(true)传入true可以让首尾自动相连

Tween t = target.DOPath(waypoints, 4, PathType.CatmullRom).SetOptions(true).SetLookAt(0.001f);

.SetLookAt(0.001f);可以让物体在移动时自动转向,参数越小转动速度越快,0.001f较为合适。

t.SetEase(Ease.Linear)

等同于写在方法句子的后面,设置移动状态,传入的Ease.Linear枚举为保持匀速直线运动,别的枚举暂不明。

t.SetEase(Ease.Linear).SetLoops(-1);

.SetLoops(-1),让移动循环


UGUI文本Text动画


text.DOText("This text will replace the existing one", 2)

将文本在2秒内覆写为参数一的文本

relativeText.DOText(" - This text will be added to the existing one", 2).SetRelative()

2秒内在文本后方加入参数一的文字

scrambledText.DOText("This text will appear from scrambled chars", 2, true, ScrambleMode.All)

在2秒内写入参数一文本,同时每秒将乱码填充到未改写部分


UGUI位置渐变动画


rectTransform.DOMove(new Vector3(x, y, z), 2);

让UI的位置移动到参数一的位置,速度是参数二(注意点:传入的第一个参数和自身的锚点位置也就是PosX,PosY没有关系,默认是从屏幕左下角开始计算的,但是和自己的中心点Pivot有关系,正确的操作姿势应该是将锚点设置到左下角,中心点调成0,0)

rectTransform.DOMove(new Vector3(x*Screen.width/width, y*Screen.height/height, z), 2);

适用于UI自适应的写法,让移动到的位置乘Screen.position再除以自己在制作时设定的场景分辨率,这样分辨率改变时移动的目标位置不会偏离

rectTransform.DOMove(new Vector3(x, y, z), 2);
rectTransform.DOMove(new Vector3(x, Szcreen.height - y, z), 2);
rectTransform.DOMove(new Vector3(Screen.width - x,y, z), 2);
rectTransform.DOMove(new Vector3(Screen.width - x, Screen.height - y, z), 2);

适用于屏幕四个角落的对齐,只需要对其左下角,然后经过处理就能克隆到其他角落,从上到下分别是:左下角,左上角,右下角,右上角。根据不同的角落需要重新设定不同的中心点(和上面自适应结合就是x*Screen.width/width和y*Screen.height/height用上面替换掉x和y)


 

UGUI图片Image颜色动画


image.DOFade(0, 1.5f);

使一个图片逐渐透明,第一个参数为透明的值,传入100为半透明,第二个参数为渐变到终点的时间。

image.DOFillAmount(0, 1.5f)

改变目标的FillAmount,第一个参数为到达的值,第二个参数为渐变到终点的时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值