dotween Append、Join的作用分别是什么.md 2.8 KB

#unity/日常积累

在 Unity 的动画插件 DoTween 中,Append 和 Join 是用于 组合多个 Tweens 的方法,主要通过 Sequence 来管理它们的执行顺序和时间关系。两者的区别主要在于它们如何处理时间线的叠加。

1. Append 的作用

  • 将 Tween 添加到序列的末尾,并依次执行。
  • 当使用 Append 方法时,新的 Tween 会在当前 Sequence 时间线的末尾执行。它会延续序列的时间线。

使用场景

用于 按顺序执行动画。比如,移动后旋转,再缩放。

示例

Sequence sequence = DOTween.Sequence();

// 第一步:将物体移动到 (3, 0, 0)
sequence.Append(transform.DOMove(new Vector3(3, 0, 0), 1f));

// 第二步:旋转物体 90 度(在第一步结束后开始)
sequence.Append(transform.DORotate(new Vector3(0, 90, 0), 1f));

// 第三步:缩放物体(在第二步结束后开始)
sequence.Append(transform.DOScale(new Vector3(2, 2, 2), 1f));

效果

  • 1 秒后移动完成。
  • 接着开始旋转,旋转持续 1 秒。
  • 然后缩放,缩放持续 1 秒。

2. Join 的作用

  • 将 Tween 与当前 Sequence 的时间线并行执行。
  • 当使用 Join 方法时,新的 Tween 会与时间线中当前的 Tween 同时执行

使用场景

用于 同时执行多个动画。比如,边移动边缩放。

示例

Sequence sequence = DOTween.Sequence();

// 第一步:将物体移动到 (3, 0, 0)
sequence.Append(transform.DOMove(new Vector3(3, 0, 0), 1f));

// 第二步:在移动时,同时缩放物体
sequence.Join(transform.DOScale(new Vector3(2, 2, 2), 1f));

效果

  • 移动和缩放会同时开始,持续 1 秒。

3. Append 和 Join 的对比

![[Pasted image 20241129100348.png]]

4. 综合示例

结合 Append 和 Join,可以创建复杂的动画。

Sequence sequence = DOTween.Sequence();

// 第一步:物体移动到 (3, 0, 0)
sequence.Append(transform.DOMove(new Vector3(3, 0, 0), 1f));

// 第二步:在移动完成后,旋转物体(单独执行)
sequence.Append(transform.DORotate(new Vector3(0, 90, 0), 1f));

// 第三步:在旋转时,同时改变颜色和缩放
sequence.Join(transform.DOScale(new Vector3(2, 2, 2), 1f));
sequence.Join(GetComponent<Renderer>().material.DOColor(Color.red, 1f));

效果

  • 物体先移动(持续 1 秒)。
  • 移动完成后,开始旋转(持续 1 秒)。
  • 在旋转的同时,颜色变为红色,同时缩放为 2 倍大小。

总结

  • Append:顺序动画,用于让动画一个接一个地执行。
  • Join:并行动画,用于让动画同时执行。

两者搭配使用,可以创建非常复杂且流畅的动画序列!