在做一些简洁动画的时候不想重复做录制一类的重复工作,这时候可以借助dotween来实现简洁的动画效果,只需一行代码即可完成流畅的动画,那么有时候需要进行多个动画的执行,也就是需要按照特定的顺序逐一执行怎么办呢,在这里dotween提供了方法链,有顺序、并行等顺序控制。
使用 Sequence
DOTween 提供了 Sequence
来组织多个动画顺序播放。更推荐这种方法:
cs
// 创建一个 Sequence
Sequence sequence = DOTween.Sequence();
// 第一个动画
sequence.Append(gameObject.transform.DOLocalMoveX(v, 0.5f));
// 第二个动画,依次执行
sequence.Append(gameObject.transform.DOLocalMoveX(orgval, 0.5f));
// 开始播放 Sequence
sequence.Play();
2. AppendInterval
和 PrependInterval
这两个方法可以在 Sequence
中插入延时。例如,你可以控制动画之间的时间间隔。
AppendInterval
:将时间延迟添加到动画序列的末尾。PrependInterval
:将时间延迟添加到动画序列的开头。
cs
Sequence sequence = DOTween.Sequence();
sequence.Append(gameObject.transform.DOLocalMoveX(v, 0.5f));
sequence.AppendInterval(1f); // 延时 1 秒
sequence.Append(gameObject.transform.DOLocalMoveX(orgval, 0.5f));
sequence.Play();
3. Join
Join
允许你同时启动多个动画。这些动画会并行执行,但会保持它们的原始顺序。
cs
Sequence sequence = DOTween.Sequence();
sequence.Append(gameObject.transform.DOLocalMoveX(v, 0.5f));
sequence.Join(gameObject.transform.DOLocalMoveY(3f, 0.5f)); // 同时播放
sequence.Append(gameObject.transform.DOLocalMoveX(orgval, 0.5f));
sequence.Play();
Join
使得 gameObject.transform.DOLocalMoveY(3f, 0.5f)
与 DOLocalMoveX(v, 0.5f)
同时开始。
4. Insert
Insert
方法允许你将动画插入到现有动画的特定时间点,这样就可以在序列中的指定位置插入新的动画。
cs
Sequence sequence = DOTween.Sequence();
sequence.Append(gameObject.transform.DOLocalMoveX(v, 0.5f));
sequence.Insert(0.25f, gameObject.transform.DOLocalMoveY(3f, 0.25f)); // 在动画开始 0.25 秒后插入新的动画
sequence.Append(gameObject.transform.DOLocalMoveX(orgval, 0.5f));
sequence.Play();
在 0.25 秒时将 DOLocalMoveY(3f, 0.25f)
动画插入到现有序列中。