文章

DoTween使用方法

DoTween使用方法

直接用法

可以简单的调用,this.transform.DOShakePosition(1f).SetLoops(-1,LoopType.Yoyo);这样就可以以1s的周期,无限次循环抖动了

进阶用法

主要的两个类Tweener和Sequence, 都继承自Tween。

Tweener用于动画控制。 Sequence是个容器用于储存Tweener或Sequence。

很多时候,动画需要系统性的控制,这个时候就需要Sequence,具体用法如下, 需要注意SetAutoKill(false)和Pause() 需要调用,否则动画会自动播放

1
2
3
4
5
6
7
8
9
10
11
12
Sequence twSeqMessageBox;
float animDuration = 0.5f;
public RectTransform messageBox;
private void TweenInitial()
{
    twSeqMessageBox = DOTween.Sequence();
    twSeqMessageBox.Join(messageBox.GetComponent<CanvasGroup>().DOFade(0.05f, animDuration));
    twSeqMessageBox.Join(messageBox.DOLocalMove(new Vector3(300f, 0f, 0f), animDuration));
    twSeqMessageBox.Join(messageBox.DOScale(new Vector3(0.8f, 0.8f, 1f), animDuration));
    twSeqMessageBox.SetAutoKill(false);
    twSeqMessageBox.Pause();
}

Join用来同时播放多个动画, Append用来依次播放每个动画.

在初始化完成后调用PlayForward()可以正向播放Sequence, 调用PlayBackwards()可以反向播放Sequence


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
一些特殊功能实现:

1.无限次往返播放UGUI位置移动的动画, 并且不受Time.Scale影响:

posY = GetComponent<RectTransform>().anchoredPosition.y;
this.GetComponent<RectTransform>().DOAnchorPosY(
    posY + 5.0f, durationTime)
    .SetEase(Ease.InOutQuart)
    .SetLoops(-1, DG.Tweening.LoopType.Yoyo)
    .SetUpdate(true);

2.无限次往返播放UGUI图片材质属性变化的动画, 并且不受Time.Scale影响:
this.GetComponent<Image>().material.DOVector(
    v4+new Vector4(3.0f, 0, 0 ,0), "_OutlineStartPoint", durationTime)
    .SetEase(Ease.InOutQuart)
    .SetLoops(-1, DG.Tweening.LoopType.Yoyo)
    .SetUpdate(true);

本文由作者按照 CC BY 4.0 进行授权