创建序列
创建序列
序列与补间动画类似,但它们不是将属性或值设置为动画,而是将其他补间动画或序列设置为组。
序列可以包含在其他序列中,而对层次结构的深度没有任何限制。
序列化的补间动画不一定是一个接一个。您可以使用插入方法打乱顺序。
补间(序列或补间)只能嵌套在单个其他序列中,这意味着不能在多个序列中重用同一补间。此外,主序列将控制其所有嵌套元素,而您将无法单独控制嵌套补间(将该序列视为影片时间线,在第一次启动时该时间线将变为固定)。
注意: 不要使用空序列。
要创建一个序列,请参考如下步骤:
1.获取一个新的序列的实例
static DOTween.Sequence()
返回一个可用的序列,您可以在其中存储和添加补间。
Sequence mySequence = DOTween.Sequence();
2.向序列中添加补间、间隔和回调
请注意,所有这些方法都需要在序列开始之前应用(通常是在创建之后的下一帧,除非暂停),否则它们将不起任何作用。
还要注意,任何嵌套补间/序列在添加到序列之前都需要完全创建,因为在此之后它将被锁定。
延迟和循环(如果不是无限的)即使在嵌套补间内也能工作。
Append(Tween tween)
将给定补间添加到序列的末尾。
mySequence.Append(transform.DOMoveX(45, 1));
AppendCallback(TweenCallback callback)
将给定的回调添加到序列的末尾。
mySequence.AppendCallback(MyCallback);
AppendInterval(float interval)
将给定的间隔添加到序列的末尾。
mySequence.AppendInterval(interval);
Insert(float atPosition, Tween tween)
在给定时间位置插入给定补间,从而允许您重叠补间,而不是一个接一个地放置补间。
mySequence.Insert(1, transform.DOMoveX(45, 1));
InsertCallback(float atPosition, TweenCallback callback)
在给定时间位置插入给定回调。
mySequence.InsertCallback(1, MyCallback);
Join(Tween tween)
在添加到序列的最后一个补间或回调的同一时间位置插入给定补间。
// The rotation tween will be played together with the movement tween mySequence.Append(transform.DOMoveX(45, 1)); mySequence.Join(transform.DORotate(new Vector3(0,180,0), 1));
Prepend(Tween tween)
将给定的补间添加到序列的开头,及时推送其余内容
mySequence.Prepend(transform.DOMoveX(45, 1));
PrependCallback(TweenCallback callback)
将给定的回调添加到序列的开头。
mySequence.PrependCallback(MyCallback);
PrependInterval(float interval)
将给定的时间间隔添加到序列的开头,及时推进其余内容
mySequence.PrependInterval(interval);
提示: 您可以创建仅由回调组成的序列,并将它们用作计时器或类似的东西。
例子
创建一个序列
// Grab a free Sequence to use Sequence mySequence = DOTween.Sequence(); // Add a movement tween at the beginning mySequence.Append(transform.DOMoveX(45, 1)); // Add a rotation tween as soon as the previous one is finished mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1)); // Delay the whole Sequence by 1 second mySequence.PrependInterval(1); // Insert a scale tween for the whole duration of the Sequence mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));
与前面的功能相同,但代码略有不同(加上换行符以使代码更清晰) :
Sequence mySequence = DOTween.Sequence(); mySequence.Append(transform.DOMoveX(45, 1)) .Append(transform.DORotate(new Vector3(0,180,0), 1)) .PrependInterval(1) .Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));