检查动画是否已播放完毕

本文关键字:播放 动画 是否 检查 | 更新日期: 2023-09-27 18:20:28

如何检查特定动画是否已在Unity中播放完毕,然后执行操作?[C#]我没有使用动画师。

检查动画是否已播放完毕

来源:http://answers.unity3d.com/questions/52005/destroy-game-object-after-animation.html

要从动画编辑器执行动作。。。

-创建一个带有简单公共函数的脚本,该函数将销毁对象。例如

public class Destroyable : MonoBehaviour 
{ 
    public void DestroyMe() 
    { 
        Destroy(gameObject); 
    } 
}

-将该脚本添加到要销毁的动画对象中。

-在动画编辑器中,将动画洗涤器移动到动画的末尾。

-使用动画工具栏中的"添加事件"按钮

-从"编辑动画事件"对话框的功能下拉列表中选择"DestroyMe"。

-现在应该播放动画,运行"DeleteMe"函数,并销毁对象/执行您的操作。

我已经用过几次这种方法,它对动画中的某些事情很有用:)

您应该检查Animation.IsPlaying值。

来自文档:

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
    public Animation anim;
    void Start() {
        anim = GetComponent<Animation>();
    }
    void OnMouseEnter() {
        if (!anim.IsPlaying("mouseOverEffect"))
            anim.Play("mouseOverEffect");
    }
}

正如Andrea在他的帖子中所说:由于您不使用Animator,因此Animation IsPlaying正是您所需要的。查看动画,看看你可以使用的其他甜蜜的东西。

using UnityEngine;
using UnityEngine.Collections;
public class ExampleClass : MonoBehaviour 
{
    Animation anim;
    void Start()
{
   anim = GetComponent<Animation>();
}
//In update or in another method you might want to check
if(!anim.isPlaying("StringWithAnimationClip") //or anim.clip.name
   //Do Something
}

也可以使用anim强制停止动画。停止();

现在你评论说你不想使用isPlaying(),所以如果你能详细说明,我会编辑我的帖子。