01.等待动画执行完
private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
//等待动画执行完
yield return tweener.WaitForCompletion();
Debug.Log("执行完成");
}
02.等待指定的循环次数
public class SphereMove : MonoBehaviour
{
private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f).SetLoops(3);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
//参数为执行次数,等待传入的循环次数后,继续执行
//若是传入的次数大于动画的循环次数 则在动画结束时继续执行
yield return tweener.WaitForElapsedLoops(1);
Debug.Log("执行到第1次");
yield return tweener.WaitForElapsedLoops(2);
Debug.Log("执行到第2次");
yield return tweener.WaitForElapsedLoops(3);
Debug.Log("执行到第3次");
}
}
03.等待动画被杀死
private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
yield return tweener.WaitForKill();
Debug.Log("动画被skill了");
}
04.等待动画执行指定时间
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 3f);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
//参数为时间,动画执行传入的时间之后或动画执行完毕,继续执行
yield return tweener.WaitForPosition(1f);
Debug.Log("动画运动到1f了");
}
05.等待动画回退
private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f).Pause().SetAutoKill(false).SetEase(Ease.Linear);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
//以下情况会继续执行函数
//使用DORestart重新播放时
//使用Rewind倒播动画完成时
//使用DOFlip翻转动画完成时
//使用DOPlayBackwards反向播放动画完成时
yield return tweener.WaitForRewind();
Debug.Log("倒播动画完成");
}
06.等待Start执行后继续执行
private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f).Pause().SetAutoKill(false).SetEase(Ease.Linear);
StartCoroutine(Wait());
}
IEnumerator Wait()
{
yeld return tweener.WaitForStart();
Debug.Log("动画启动完成");
}