Unity3d 在Unity中同步时间和动画的问题

Unity3d 在Unity中同步时间和动画的问题,unity3d,Unity3d,我的问题是,我想根据留给用户猜测的时间播放不同的动画。由于Unity更新的性质,我当前的代码不起作用。不知道如何改变它。我不想将其转换为协同程序,因为我必须更改很多以前的代码。我将非常感谢您的帮助 if(用户猜测) { timerText.gameObject.SetActive(true); timer-=Time.deltaTime; timerText.text=timer.ToString(“0.00”); 调试日志(计时器); } 如果(计时器>90) { bossArmature.a

我的问题是,我想根据留给用户猜测的时间播放不同的动画。由于Unity更新的性质,我当前的代码不起作用。不知道如何改变它。我不想将其转换为协同程序,因为我必须更改很多以前的代码。我将非常感谢您的帮助

if(用户猜测)
{
timerText.gameObject.SetActive(true);
timer-=Time.deltaTime;
timerText.text=timer.ToString(“0.00”);
调试日志(计时器);
}
如果(计时器>90)
{
bossArmature.animation.Play(“BossVeryHappy”,-1);
}
否则如果(计时器>70和计时器<90)
{
bossarpy.animation.Play(“BossHappy”,-1);
}
否则如果(计时器>50和计时器<70)
{
bossarr.animation.Play(“BossNeutral”,-1);
}
否则如果(计时器>30和计时器<50)
{
Bossarry.animation.Play(“BossAngry”,-1);
}

您可以使用animator条件根据计时器控制行为,只需将animator的“timer”参数设置为当前计时器值即可。然后使用LessThan条件在不同的动画中前进

bossarmeture.animation.SetFloat(“Timer”,Timer);
然后它可能看起来像这样


您可以使用animator条件根据计时器控制行为,只需将animator的“timer”参数设置为当前计时器值即可。然后使用LessThan条件在不同的动画中前进

bossarmeture.animation.SetFloat(“Timer”,Timer);
然后它可能看起来像这样


BugFinder的意思可能是:使用和转换我更喜欢的方式,因为它更易于维护和扩展。不幸的是,我们不知道博萨尔动画公司是否真的是一个成熟的动画制作人,尽管它看起来很成熟


然而,如果您想坚持您的解决方案,我只需添加一个枚举状态

private enum BossState
{
非常高兴,
高兴,,
中立的
愤怒的
}
并具有用于存储该值的字段:

私有BosssState状态;
以及一个用于在值更改时自动更新动画师的命令:

私有BossState状态
{
get=>state;
设置
{
状态=值;
开关(状态)
{
case BossState.VeryHappy:
bossArmature.animation.Play(“BossVeryHappy”,-1);
打破
case BossState.快乐:
bossarpy.animation.Play(“BossHappy”,-1);
打破
箱玻色状态。中性:
bossarr.animation.Play(“BossNeutral”,-1);
打破
case BossState.愤怒的:
Bossarry.animation.Play(“BossAngry”,-1);
打破
}
}
}
然后更改更新方法,使其仅在尚未处于该状态时检查相应的情况,否则总是每帧重新启动动画

if(用户猜测){
timerText.gameObject.SetActive(true);
timer-=Time.deltaTime;
timerText.text=timer.ToString(“0.00”);
调试日志(计时器);
}
如果(状态!=BossState.VeryHappy&&timer>90)
{
State=BossState.VeryHappy;
}
否则如果(状态!=BossState.Happy&&timer>70&&timer<90)
{
州=博斯州。快乐;
}
否则如果(状态!=BossState.Neutral&&timer>50&&timer<70)
{
状态=玻色状态。中性;
}
else if(State!=BossState.angle&&timer<50)
{
状态=状态。生气;
}

BugFinder的意思可能是:使用和转换我更喜欢的方式,因为它更易于维护和扩展。不幸的是,我们不知道博萨尔动画公司是否真的是一个成熟的动画制作人,尽管它看起来很成熟


然而,如果您想坚持您的解决方案,我只需添加一个枚举状态

private enum BossState
{
非常高兴,
高兴,,
中立的
愤怒的
}
并具有用于存储该值的字段:

私有BosssState状态;
以及一个用于在值更改时自动更新动画师的命令:

私有BossState状态
{
get=>state;
设置
{
状态=值;
开关(状态)
{
case BossState.VeryHappy:
bossArmature.animation.Play(“BossVeryHappy”,-1);
打破
case BossState.快乐:
bossarpy.animation.Play(“BossHappy”,-1);
打破
箱玻色状态。中性:
bossarr.animation.Play(“BossNeutral”,-1);
打破
case BossState.愤怒的:
Bossarry.animation.Play(“BossAngry”,-1);
打破
}
}
}
然后更改更新方法,使其仅在尚未处于该状态时检查相应的情况,否则总是每帧重新启动动画

if(用户猜测){
timerText.gameObject.SetActive(true);
timer-=Time.deltaTime;
timerText.text=timer.ToString(“0.00”);
调试日志(计时器);
}
如果(状态!=BossState.VeryHappy&&timer>90)
{
State=BossState.VeryHappy;
}
否则如果(状态!=BossState.Happy&&timer>70&&timer<90)
{
州=博斯州。快乐;
}
否则如果(状态!=BossState.Neutral&&timer>50&&timer<70)
{
状态=玻色状态。中性;
}
else if(State!=BossState.angle&&timer<50)
{
状态=状态。生气;
}

为什么不让动画师完成所有工作,只需在动画师中设置一个值,让它根据值播放相应的动画HI!谢谢你的回答。我没有用动画师。所有的动画都是用Dragonbones Pro制作的,我将把它作为电枢导入。为什么不让动画师做所有的工作,只需在animator中设置一个定时器值,让它播放适当的动画dep