📜  dotween do wait - C# (1)

📅  最后修改于: 2023-12-03 15:14:47.574000             🧑  作者: Mango

DoTween套件DoWait简介

简介

DoTween是一个流行的dotween套件,允许程序员以一种强大且简单的方式在Unity中进行动画的创建和管理。 DoWait是DoTween的一个组成部分,在动画中暂停执行一段时间。

DoWait作用

在动画中,我们可能需要等待一定的时间后再继续执行下一步。在这种情况下,DoWait非常有用,允许我们对动画进行定时控制。例如,我们可以使用DoWait使动画暂停几秒钟,然后再执行接下来的动画。

使用方法

在代码片段中,我们可以看到使用DoWait的标准语法。我们只需要把需要等待的时间以及需要执行的动作作为参数传递给DoWait即可。一旦等待时间完成,DoWait将执行指定的动作。

public IEnumerator WaitForAnimation(float waitTime, Action onComplete ) 
{
    yield return new WaitForSeconds(waitTime);
    onComplete?.Invoke();      
}

void StartAnimation() 
{
    // 等待2秒后执行动画
    StartCoroutine(WaitForAnimation(2.0f, ()=> {
        // 执行动画
        transform.DOScale(2.0f, 1.0f);
    }));
}
实际应用

DoWait在以下情况中非常有用:

  • 延迟执行动画
  • 创建动画序列
  • 动画本身需要等待一段时间才能继续执行
延迟执行动画

假设我们需要在场景加载后延迟几秒后才开始执行动画。我们只需在脚本的Start()方法中使用DoWait即可。

void Start() 
{
    StartCoroutine (DelayAnimation ());
}

IEnumerator DelayAnimation()
{
    yield return new WaitForSeconds(2.0f);
    //执行动画
}
创建动画序列

您可以使用DoTween中的Seqence方法创建复杂的动画序列。在动画序列的两个动画之间,我们可以使用DoWait把它们分隔开来。

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(5, 1.0f));
mySequence.Append(transform.DOMoveY(5, 1.0f));
mySequence.Append(transform.DOMoveZ(5, 1.0f));
mySequence.Append(transform.DORotate(new Vector3(45, 45, 45),1.0f));
mySequence.Append(transform.DOScale(0, 1.0f));
mySequence.Append(transform.DOScale(1, 1.0f));
mySequence.Append(transform.DORotate(Vector3.zero, 1.0f));
mySequence.Play();
动画本身需要等待一段时间才能继续执行

有时在动画本身中,我们需要等待一段时间后才能继续执行。使用DoWait,我们可以轻松实现这一点。

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(5, 1.0f));
mySequence.Append(DOTween.Wait(2.0f));
mySequence.Append(transform.DOMoveY(5, 1.0f));
mySequence.Play();
结论

DoWait是DoTween的一个重要组成部分,允许我们以一种简单的方式来控制动画的执行顺序和时间。无论您是创建简单动画,还是需要创建复杂的动画序列,DoWait都是非常有用的。它使我们能够轻松地延迟动画和等待动画本身完成,这是创建高质量动画的关键。