繁体   English   中英

如何控制统一动画师中特定时间播放的动画?

[英]How to control the animation to be played by a specific times in unity animator?

我有一个动画师,其中有一个动画状态被设置为循环播放。 我想控制它播放3次或一次。 怎么做?

public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        int normalizedTime = Convert.ToInt32((stateInfo.normalizedTime));
        if (normalizedTime == animator.GetInteger(PlayTimes))
        {
            animator.SetBool("ToNextState", true);
        }  
    }

我尝试通过这种方式进行操作,但我认为它并不完美,因为有时无法准确停止此动画。

动画结束时是否会触发事件?

您不能只在gameObject内部使用计数吗? 设置一个int并提供动画可以循环3次的次数,然后在代码的animationRan开始处将animationRan变量设置为0。现在在动画窗口中,将一个函数放在动画的末尾,该函数称为,可以增加您的动画播放次数animationRan变量。

然后在动画开始时进行方法调用,以检查animationRan是否已达到极限,如果有,则执行某些操作

像这样

...
public int animationLimit = 3;
public int animationRan = 0;
....

public void OnAnimationStart()
{
    animationRan = 0;
}

public void OnAnimationEnd()
{
    if(animationRan < animationLimit)
    {
        Animation.Stop();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM