DOTween is a fast, efficient, type-safe object-oriented tweening animation engine for Unity, and has made many optimizations for C# users.
Demo :
1.DoTween installation
- download
- Import DOTween plug-in
- Drag into project
- Open the DOTween tool panel in the Tools / Demigiant menu and select "Setup DOTween..." from the panel that appears.
2.Use
- Add citation
using DG.Tweening;
- Get the corresponding component
- Do: The method determines the animation.
- Set: set animation
- On: Set animation event
3. Commonly used
- Objects move and rotate
//移动
transform.DOMove(目标点,时间);
rigidbody.DOMove(目标点,时间);
//旋转
transform.DORotate(目标点,时间);
- Zoom and punch functions
//缩放
transform.DOScale(目标点,时间);
//punch函数_让物体在指定时间内沿着指定方向做弹性位移动画效果。
transform.DOPunchPosition(new Vector3(方向), 持续时间, 弹性值, 振动值);
- Shake function
transform.DOShakePosition(震动时间,强度,频率,随机角度);
- Blend function
//两个动作整合在一起执行一个函数
transform.DOBlendableMoveBy(目标点,时间);
5. Material changes color and transparency
Material material = GetComponent<MeshRenderer>().material;
//改变颜色
material.DOColor(Color.red, 2f);
//改变透明度
//1.Color.clear
material.DOColor(Color.clear, 2f);
//2.DOFade
material.DOFade(0, 2);
//材质颜色渐变
material.DOGradientColor(Gradient,2);
6.Camera topology
- Change aspect ratio
camera.DOAspect(比值, 时间);
- Change background color
camera.DOColor(Color.red, 2);
- Change camera distance
//透视模式
camera.DOFieldOfView(目标, 时间);
//正交模式
camera.DOOrthoSize(目标, 时间);
- Camera split screen effect
//二选一
camera.DOPixelRect(new Rect(0, 0, 500, 500), 2); //像素
camera.DORect(new Rect(0, 0, 0.5f, 0.5f), 2); //百分比
- camera shake effect
camera.DOShakePosition();
7.Text extension
- One by one typing effect
//SetEase(Ease.Linear)目的添加匀速效果
text.DOText("huhuhsifjiosfjiosdhjfiosd", 5).SetEase(Ease.Linear);
8. Animation_Queue
- Add animation to queue_execute sequentially
Sequence sequence = DOTween.Sequence();
sequence.Append(transform.DOMove(Vector3.one, 2));
sequence.AppendInterval(1); //添加延时
sequence.Append(transform.DOMove(new Vector3(1, 0, 0), 2));
- Insert animation
//如果时间存在会覆盖原先的时间
sequence.Insert(时间, transform.DOMove(-Vector3.one, 1));
- Queue insertion method
//1.插入法
sequence.Insert();
//2.join加入
sequence.join(方法,时间);
- Pre-added method usage
//会先执行
sequence.AppendInterval(1);
sequence.Prepend(transform.DOMove(Vector3.one * 2, 2));
- Callback
//按时间插入
sequence.InsertCallback(5, 方法);
//直接添加
sequence.AppendCallback(方法);
- Parameter setting methods and loops
//-1代表无线循环
SetLoops(循环次数,LoopType);
- Set to incremental motion_From
.From();
- animation delay
//动画延迟3秒执行——SetDelay()
transform.DOMove(new Vector3(2f, 2f, 2f), 2).SetDelay(3);
//让物体的运动以速度为基准——原参数(速度大小)
transform.DOMove(new Vector3(2f, 2f, 2f), 2).SetSpeedBased();
- Set ID and incremental motion
//设置ID即通过id直接调用缓存的动画
transform.DOMove(new Vector3(2f, 2f, 2f), 2).SetId("ID");
DOTween.Play("ID");
//SetRecyclable()_是否可回收——可以直接通过id调用
transform.DOMove(Vector3.one, 10).SetRecyclable(true);
//SetRelative()_将动画给位增量运动
transform.DOMove(Vector3.one, 10).SetRelative(true);
9. Motion curve
- Set curve mode
//1.SetEase()
transform.DOMove(Vector3.one, 10).SetEase(Ease.);
//2.结合Unity的AnimationCurve
public AnimationCurve _curve;
transform.DOMove(Vector3.one, 10).SetEase(_curve);