DOTween is a fast, efficient, fully type-safe object-oriented animation engine,
optimized for C#
(it is also the evolution of HOTween, author's previous Unity tween engine).
Get Started
查看该教程using DG.Tweening
transform.DOMove(vec3,duration)
,在该时间内移动到某个位置DOMoveX
移动X坐标到某位置DOJump
,跳动到某位置using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class TestDOWeen : MonoBehaviour
{public int test_type = 0;void Start(){switch (test_type){case 0:transform.DOMove(new Vector3(1, 2, 3), 4);break;case 1:transform.DOMoveX(3, 3);break;case 2:transform.DOJump(new Vector3(4, 5, 6), 3, 5, 6);break;}}
}
case 3:transform.DOMoveZ(10, 5).SetEase(Ease.Linear);break;
case 4:transform.DOMoveZ(10, 5).SetEase(Ease.OutQuad);break;
case 5:transform.DOMoveZ(10, 5).SetEase(Ease.InQuad);break;
SetLoops
第一个变量表示循环次数,第二个为LoopType枚举类型,可以设置为重新动画,或 yoyo,大概是悠悠球一样再返回的意思?case 6:transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Restart);break;
case 7:transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Yoyo);break;
case 8:transform.DOMoveZ(10, 2).SetEase(Ease.InQuad).SetLoops(2, LoopType.Yoyo); ;break;
MeshRender
中的 material
获取DOCOlor
来变换颜色Color
的 rgba
值域均为 [0,1][0,1][0,1],所以使用前需要归一化!case 9:Material mat = GetComponent().material;mat.DOColor(Color.red, 5);break;
case 10:Material mat2 = GetComponent().material;mat2.DOColor(new Color(100.0f / 255, 100.0f / 255, 100.0f / 255), 5);break;
case 11:transform.DOScale(new Vector3(2, 2, 2), 5);break;
Tweener
实例,然后调用合适的回调函数即可onComplete
完成时回调OnKill
杀死 twe时回调OnPause
暂停时回调OnPlay
每次播放时回调OnStart
第一次开始播放时回调OnUpdate
没帧播放时回调OnStepComplete
每步播放结束时回调(loop一次算一步)case 12:Tweener twe = transform.DOScale(new Vector3(2, 2, 2), 3);twe.OnComplete(ChangeColor);break;/** Blablabla */private void ChangeColor(){Material mat = GetComponent().material;mat.DOColor(Color.red, 3);}
case 13:Text text = GetComponent();text.DOText("Hello World, this is a message sent by the computer.", 3);break;
transform.DOShakePosition()
振动,放在摄像机上甚至可以模拟画面振动效果transform.DOPath()
沿着路径移动,路径为给定的vector3的数组DoRotate()
旋转DoLookAt()
朝向移动DoFade()
消失DoPunchPosition/Rotation/Scale()
类似给你一拳(?)逐渐能量减少的感觉。Append
添加其 TweenPrepend
表示将 Tween 添加到序列的开头Join
表示将上个添加的 Tween 和该 Tweener 同时播放case 15:Sequence seq = DOTween.Sequence();seq.Append(transform.DOMoveY(3, 2));seq.Append(transform.DOMoveZ(3, 2));seq.Prepend(transform.DOMoveX(3, 2));seq.Join(transform.DOMoveZ(10, 2));break;
所以播放效果如下
Insert(p,tween)
来将 Tween 设定在时间 p 播放,而不是如上按顺序播放,这样可以允许重叠播放。InsertInterval(p)
表示这 p 秒不播放。放在开头 PrependInterval
就意味着动画延后p秒开始播放AppendCallback/InsertCallback/PrependCallback()
,添加回调。Play()
和 Pause()
等方法来控制 tween 的播放