检查动画是否已播放完毕
本文关键字:播放 动画 是否 检查 | 更新日期: 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(),所以如果你能详细说明,我会编辑我的帖子。