如何检查特定动画是否已在Unity中播放,然后执行操作? [C#]我没有使用动画师。
答案 0 :(得分:3)
来自:http://answers.unity3d.com/questions/52005/destroy-game-object-after-animation.html
从动画编辑器执行动作......
使用简单的公共函数创建一个脚本,该函数将销毁该对象。 e.g。
c.gender = 'M'
- 将该脚本添加到要销毁的动画对象。
- 在动画编辑器中,将动画滑块移动到动画的末尾。
- 使用动画工具栏中的“添加事件”按钮
- 从“编辑动画事件”对话框的功能下拉列表中选择“DestroyMe”。
- 你的动画应该播放,运行'DeleteMe'功能,然后销毁对象/做你的动作。
我已经使用过这种方法几次,对于动画中的某些事情很方便:)
答案 1 :(得分:1)
您应该检查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");
}
}
答案 2 :(得分:0)
就像安德里亚在帖子中所说的那样:Animation-IsPlaying几乎是你所需要的,因为你不使用Animator。检查Animation以查看您可以使用的其他甜食。
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.Stop();
强制停止动画现在你评论说你不想使用isPlaying()所以如果你能详细说明我会编辑我的帖子。