我有在播放动画Update
功能全,在Switch
的情况下。
动画结束后,布尔被设置为true。
我的代码:
case "play":
animation.Play("play");
gobool = true;
startbool = false;
break;
问题是我的gobool
和startbool
立即得到设定没有完成的动画。 我怎样才能让我的程序等待,直到动画结束?
我有在播放动画Update
功能全,在Switch
的情况下。
动画结束后,布尔被设置为true。
我的代码:
case "play":
animation.Play("play");
gobool = true;
startbool = false;
break;
问题是我的gobool
和startbool
立即得到设定没有完成的动画。 我怎样才能让我的程序等待,直到动画结束?
基本上你需要为这个解决方案的工作做两件事情:
怎么可以这样做是一个例子:
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
返回false
在同一帧PlayQueued被调用。
随着稍微修改一下就可以创建动画扩展方法,它简化了这个功能,比如:
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");
}
资料来源,替代品和讨论。