#unity/日常积累
在 Unity 的动画插件 DoTween 中,Append 和 Join 是用于 组合多个 Tweens 的方法,主要通过 Sequence 来管理它们的执行顺序和时间关系。两者的区别主要在于它们如何处理时间线的叠加。
Append 的作用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));
Join 的作用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));
Append 和 Join 的对比![[Pasted image 20241129100348.png]]
结合 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));
Append:顺序动画,用于让动画一个接一个地执行。Join:并行动画,用于让动画同时执行。两者搭配使用,可以创建非常复杂且流畅的动画序列!