开发学院

您的位置:首页>教程>正文

教程正文

创建序列

创建序列

  序列与补间动画类似,但它们不是将属性或值设置为动画,而是将其他补间动画或序列设置为组。

  序列可以包含在其他序列中,而对层次结构的深度没有任何限制。

  序列化的补间动画不一定是一个接一个。您可以使用插入方法打乱顺序。

  补间(序列或补间)只能嵌套在单个其他序列中,这意味着不能在多个序列中重用同一补间。此外,主序列将控制其所有嵌套元素,而您将无法单独控制嵌套补间(将该序列视为影片时间线,在第一次启动时该时间线将变为固定)。

  注意: 不要使用空序列。

  要创建一个序列,请参考如下步骤:

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()));