用到什么记录什么

Transform

Position

改变世界坐标

  • 第一个参数是要移动到的目标点,不是移动这个向量的距离

    • transform.DOMove(new Vector3(1, 1, 1), 2);
  • 只控制x轴上的移动,其他两个方向同理

    • transform.DOMoveX(1, 2);

改变局部坐标

  • 相对当前局部坐标的移动距离
    • transform.DOLocalMove(new Vector3(1, 1, 1), 2);
    • transform.DOLocalMoveX(1, 2);

Text

  • 颜色渐变:

    • text.DOColor(Color.black, 2f);
  • 透明度渐变:

    • text.DOFade(0, 2f);

这里有坑:如果是对UI和Text的话,需要用Canvas GroupDoFade,原因不明

Dotween常用方法

动画同时播放

  • SequenceSequence quence = DOTween.Sequence();

  • 添加动画到队列中quence.Append(transform.DOMove(Vector3.one, 2));

  • 加入当前动画:Join会加入和让动画与当前正在执行的动画一起执

    • quence.Append(transform.DOScale(new Vector3(2, 2, 2), 2));
    • quence.Join(transform.DOMove(Vector3.zero, 2));

回调

  • quence.AppendCallback(CallBack);
  • transform.DOMove(Vector3.one, 2).OnComplete(() => { });

quence 的OnComplete没有回调

Ease 运动曲线

  • transform.DOMove(Vector3.one, 2).SetEase(Ease.Linear, 3, 0f);

  • 直接设置线性运动效果

实例方法

  • _tweener = transform.DOMove(Vector3.one, 2);

中断 Dotween

Dotween 开始进行会默认执行完当前动画,如果需要中断需要手动 Kill

Sequence 单纯DOTween.Kill (transform) 无效需要置空处理,类似于对于协程中断开始的处理

  • 对 Sequence 置空,置空才开始新的动画,Kill 当前 Dotween
  • 或者 mySequence.Kill()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private Sequence sequence;
private Guid uid;

private void StartScalingAnimation()
{
if (sequence == null) // only create if there was none before.
{
sequence = DOTween.Sequence();
sequence.Append(transform.DOScale(new Vector2(1.1f, 1.1f), 1)).SetLoops(-1, LoopType.Yoyo);
Debug.Log("sequence id is:" + sequence.id);

//if your sequence gets an id upon creation, you can cache
//it and kill it later with that id. In my case, no id was
//given automatically at the start, so I created one.

uid = System.Guid.NewGuid();
sequence.id = uid;
Debug.Log("sequence id now:" + sequence.id);
}

sequence.Play();
}

private void StopScalingAnimation()
{
DOTween.Kill(uid);
sequence = null;
}

KillAll():会停止当前场景所有执行的Dotween,只有在切换场景时使用,一般情况下killSequece即可

From:https://stackoverflow.com/questions/37214649/how-to-kill-current-running-dotween-sequence-in-unity3d