0
点赞
收藏
分享

微信扫一扫

09.协程

_LEON_ 2022-11-02 阅读 147


01.等待动画执行完

private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f);
StartCoroutine(Wait());
}

IEnumerator Wait()
{
//等待动画执行完
yield return tweener.WaitForCompletion();
Debug.Log("执行完成");

}

09.协程_sed


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次");

}

}

09.协程_sed_02


03.等待动画被杀死

private Tweener tweener;
void Start()
{
tweener=transform.DOMove(Vector3.one*2, 2f);
StartCoroutine(Wait());
}

IEnumerator Wait()
{
yield return tweener.WaitForKill();
Debug.Log("动画被skill了");

}

09.协程_sed_03


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("动画启动完成");
}


举报

相关推荐

0 条评论