C# 等待动画在unity3d中完成
我有一个动画,它在C# 等待动画在unity3d中完成,c#,animation,camera,boolean,unity3d,C#,Animation,Camera,Boolean,Unity3d,我有一个动画,它在开关案例中的更新-功能中播放 动画完成后,将布尔值设置为true 我的代码: case "play": animation.Play("play"); gobool = true; startbool = false; break; 问题是我的gobool和startbool在未完成动画的情况下立即设置。如何让程序等待动画完成?基本上,要使此解决方案正常工作,您需要做两件事: 启动动画 在播放下一个动画之前,请等待动画完成 如
开关
案例中的更新
-功能中播放
动画完成后,将布尔值设置为true
我的代码:
case "play":
animation.Play("play");
gobool = true;
startbool = false;
break;
问题是我的
gobool
和startbool
在未完成动画的情况下立即设置。如何让程序等待动画完成?基本上,要使此解决方案正常工作,您需要做两件事:
animation.PlayQueued("Something");
yield WaitForAnimation(animation);
而WaitForAnimation
的定义是:
C#:
JS:
do-while循环来自实验,实验表明调用PlayQueued的同一帧中的animation.isPlaying
返回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");
}
基本上,要使此解决方案正常工作,您需要做两件事:
animation.PlayQueued("Something");
yield WaitForAnimation(animation);
而WaitForAnimation
的定义是:
C#:
JS:
do-while循环来自实验,实验表明调用PlayQueued的同一帧中的animation.isPlaying
返回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");
}