我有一个动画,在[{1}} - 函数中播放Update
个案例。
动画结束后,布尔值设置为true。
我的代码:
Switch
问题是我的case "play":
animation.Play("play");
gobool = true;
startbool = false;
break;
和gobool
在没有完成动画的情况下立即设置。如何让我的程序等到动画结束?
答案 0 :(得分:7)
基本上,您需要为此解决方案做两件事:
如何做到这一点的一个例子是:
animation.PlayQueued("Something");
yield WaitForAnimation(animation);
WaitForAnimation
的定义是:
C#:
private IEnumerator WaitForAnimation (Animation animation)
{
do
{
yield return null;
} while (animation.isPlaying);
}
JS:
function WaitForAnimation (Animation animation)
{
yield; while ( animation.isPlaying ) yield;
}
do-while循环来自实验,显示animation.isPlaying
在同一帧PlayQueued中返回false
。
通过一些修改,您可以为动画创建一个扩展方法,简化了这一点,例如:
public static class AnimationExtensions
{
public static IEnumerator WhilePlaying( this Animation animation )
{
do
{
yield return null;
} while ( animation.isPlaying );
}
public static IEnumerator WhilePlaying( this Animation animation,
string animationName )
{
animation.PlayQueued(animationName);
yield return animation.WhilePlaying();
}
}
最后,您可以在代码中轻松使用它:
IEnumerator Start()
{
yield return animation.WhilePlaying("Something");
}