Unity获得动画状态机上所有动画名字
看了网上的很多博客,都是Animation,都没有Animator
那我把查找名字的找出来了
得到动画状态机Animator,再得到他的长度,最后把名字全部存在数组中
这段代码是我用在了动画帧事件中控制动画的,直接贴出来提供给大家
先得到Animator
private void Start()
{
anim = GetComponent<Animator>();
AddAnimationEvent();
}
给动画添加帧事件
private void AddAnimationEvent()
{
//得到所有动画
AnimationClip[] clips = anim.runtimeAnimatorController.animationClips;
for (int i = 0; i < clips.Length; i++)
{
//根据动画名字 找到你要添加的动画
if (string.Equals(clips[i].name, "atk01"))
{
//添加动画事件
AnimationEvent events = new AnimationEvent();
events.functionName = "OnClickAtk01";
events.time = 0.1f;
clips[i].AddEvent(events);
}
if (string.Equals(clips[i].name, "atk02"))
{
//添加动画事件
AnimationEvent events = new AnimationEvent();
events.functionName = "OnClickAtk02";
events.time = 0.1f;
clips[i].AddEvent(events);
}
if (string.Equals(clips[i].name, "atk03"))
{
//添加动画事件
AnimationEvent events = new AnimationEvent();
events.functionName = "OnClickAtk03";
events.time = 1.0f;
clips[i].AddEvent(events);
}
if (string.Equals(clips[i].name, "atk05"))
{
//添加动画事件
AnimationEvent events = new AnimationEvent();
events.functionName = "OnClickAtk05";
events.time = 0.14f;
clips[i].AddEvent(events);
}
if (string.Equals(clips[i].name, "atk08"))
{
//添加动画事件
AnimationEvent events = new AnimationEvent();
events.functionName = "OnClickAtk08";
events.time = 0.25f;
clips[i].AddEvent(events);
}
}
anim.Rebind();
}
本文介绍如何在Unity中获取Animator状态机的所有动画名字,并展示如何为动画添加帧事件。通过获取Animator对象,遍历其状态机以得到动画名字并存储到数组中,适用于在动画控制中使用。
657

被折叠的 条评论
为什么被折叠?



