Unity 获得动画状态机Animator上所有动画名字以及添加动画帧事件

本文介绍如何在Unity中获取Animator状态机的所有动画名字,并展示如何为动画添加帧事件。通过获取Animator对象,遍历其状态机以得到动画名字并存储到数组中,适用于在动画控制中使用。

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();
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值