Unity中的DoTween(应用篇)
前言上文(Unity中的DoTween)分享了 DoTween 的使用方法和声明周期,对 DoTween 这个插件有了初步认识。
本文对 DoTween 的一些常用方法做归纳,作为一本小字典, 方便日后使用时查阅
注意:
API官方文档参看:DOTween - Documentation
本文只罗列出方法名和效果的文字描述,如果要看效果的gif动图,可以参看这篇文章
四五二十:DOTWeen插件使用技巧
移动(DOMove)
api
DOMove(Vector3 to, float duration, bool snapping)
将物体在duration时间内移动到目标位置to
snapping:如果设置为True,tween将平滑地将所有值对齐为整数世界坐标上移动:transform.DOMove
本地坐标上移动:transform.DOLocalMove
世界坐标的X轴上移动:transform.DOMoveX
本地坐标的X轴上移动:transform.DOLocalMoveX
例子
创建一个小球,位置设为世界坐标原点(0,0,0),挂上此脚本:
using DG.Tweening; //引入命名空间
public class DOTWeenTest : MonoBehaviour
{
void Start()
{
transform.DOMove(new Vector3(4, 3, 0), 3); //脚本物体3秒从当前位置移动到世界坐标(4,3,0)位置
}
}
归位(Form)
api
transform.DOMove(from, duration).From();
from相当于做原本的相反操作,原本的DOMove是从自身所在位置往to的位置移动,加上From之后变成从to的位置往自身所在位置移动
粒子
transform.DOMove(new Vector3(2, 2, 0), 1).From();
1秒时间从世界坐标(2,2,0)处回到自身当前位置:
transform.DOMove(new Vector3(2, 2, 0), 2).From(true);
从以自身为原点的坐标系(2,2,0)处回到自身当前位置:
动画正放与倒放
api
Pause();//暂停,防止自动播放
SetAutoKill(false);//关闭动画自动销毁
PlayForward(); //该动画正放
PlayBackwards(); //该动画倒放
SetLoops(N): 循环N次例子
using DG.Tweening; //引入命名空间
public class DOTWeenTest : MonoBehaviour
{
Tweener twe; //声明一个Tweener对象
void Start()
{
twe = transform.DOMove(new Vector3(3, 4, 0), 2);//将动画保存在Tweener对象中
twe.Pause();//暂停,防止自动播放
twe.SetAutoKill(false);//关闭动画自动销毁
}
//创建两个方法事件,控制前放后倒放
public void Forward()
{
twe.PlayForward(); //该动画正放
}
public void Back()
{
twe.PlayBackwards(); //该动画倒放
}
}
设置动画曲线
在播放动画的时候,如果没有设置动画播放方式,会默认以先快后慢的方式播放
但是我们可以通过 SetEase 方法设置我们想要的播放方式
api
例子
void Start()
{
Tweener twe = transform.DOMoveX(5, 2); //3秒时间在世界坐标中,让X轴移动到5的位置
twe.SetEase(Ease.InCubic); //由慢到快
}
2022/6/8 先午休会儿,下班接着写~
2022/6/13 前几天忙着装机,同时也在看unity的NGUI相关知识,所以一直没来填坑,今天继续补充:
使用动画改变颜色
既然让物体移动是通过使用transform来点出DOTWeen的方法,那改变颜色就是让材质组件来调用DOTWeen的方法即可api
DOColor(color, time):在time时间内变成color颜色
例子
void Start()
{
Material material = GetComponent<MeshRenderer>().material;
material.DOColor(Color.red, 3); //3秒变红
}
动画事件
api
[*]OnComplete(fun):动画结束后调用fun方法回调
OnStar动画第一次播放时调用OnPlay动画每次从暂停状态解除时调用(包括初次播放)Pause动画暂停时调用一次OnUpdate动画播放过程中每帧调用OnStepComplete每次动画播放结束时调用(受循环次数影响)OnComplete每次动画播放结束时调用(不受循环次数影响,且倒放时不适用)例子
Material material;
Tweener twe;
void Start()
{
material = GetComponent<MeshRenderer>().material;
twe = material.DOColor(Color.red, 3); //3秒变红
twe.OnComplete(ChangeColour); //动画播放结束时调用
}
void ChangeColour() //变色
{
twe = material.DOColor(Color.blue, 2); //2秒变蓝
}文本动画(逐字显示)
api
[*]DOText(txt, time),在time时间内显示txt文本
例子
void Start()
{
Text text = GetComponent<Text>();
text.DOText(&#34;最心爱的情人,却伤害我最深,为什么你背着我爱别人&#34;, 5); //5秒时间将这段文字逐字显示
text.DOColor(Color.green, 5); //颜色逐渐变绿
}带事件的例子
void Start()
{
Text text = GetComponent<Text>();
Tweener twe = text.DOText(&#34;下面是有奖竞猜:&#34;, 2);
twe.OnComplete(() =>
{
text.text = &#34;&#34;;
text.DOText(&#34;富奸老贼是怎么死的?&#34;, 2);
});
}
文本动画(逐渐显示)
api
DOFade
例子
void Start()
{
Text text = GetComponent<Text>();
text.DOFade(1, 2); //2秒时间让A值变为1
}
屏幕抖动动画
api
[*]DOShakePosition(time, scale):在随机方向震动time时间,振幅为3
[*]DOShakeRotation:旋转抖动
[*]DOShakeScale:缩放抖动,弹弹弹
例子
这个脚本挂在相机上
void Start()
{
//transform.DOShakePosition(2); //在随机方向震动2秒,幅度默认为1
transform.DOShakePosition(2, 3); //在随机方向震动3秒,振幅为3
}或者
void Start()
{
//transform.DOShakePosition(2); //在随机方向震动2秒,幅度默认为1
//transform.DOShakePosition(2, 3); //在随机方向震动2秒,振幅为3
transform.DOShakePosition(3, new Vector3(0, 2, 0));//只在世界坐标Y轴上震动3秒,振幅为2
}
可视化编辑
1.为需要做动画的物体添加DoTweenAnimation组件:
2.选择要做动画的组件:
3. 使用代码控制播放
public DOTweenAnimation a; //在编辑器界面将挂有该组件的物体拖进来
void Start()
{
a.DOPlayForward();
}
路径编辑器
1.场景中创建一个Cube,添加DoTweenPath组件:
总的来说DOTween真的是一款很好用的工具,上面只罗列了一些常用的接口,后续还是需要多多练习,熟能生巧。
时不我待,知难而进,一起加油!:)
页:
[1]