基本上你需要做两件事情该解决方案的工作:
- 开始动画。
- 等待动画完成后再播放下一个动画。
怎么可以这样做的一个例子是:
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被调用。
有了稍微修改一下就可以创建动画扩展方法,它简化了这个功能,比如:
IEnumerator Start()
{
yield return animation.WhilePlaying("Something");
}
Source, alternatives and discussion.
:
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();
}
}
最后,你可以很容易地在代码中使用此