Unity3D Animator 动态添加事件回调和替换动画

本文介绍了如何在Unity3D中动态地为Animator的AnimationClip添加事件回调。通过AnimatorStateController和AnimationClip,可以在动画执行完成后触发回调函数。回调函数通过消息机制调用GameObject上的特定函数,实现方式包括通过Controller的animationClips数组获取或直接将clip作为GameObject属性获取。
摘要由CSDN通过智能技术生成

     主要的层次结构式是, Animator 包含一个 AnimatorStateController 控制器, Controller 含有多个层,每个层含有多个状态, 每个状态可以绑定一个AnimationClip。执行动画的是AnimationClip , 可以挂在回调事件的也是AnimationClip。所以,动态挂在事件回调,我们需要获取AnimationClip。


					AnimationEvent aEvent1 = new AnimationEvent();
					aEvent1.time           = clip.length;
					aEvent1.functionName   = "OnOpenComplete";  
					clip.AddEvent(aEvent1);

以上是动态创建一个事件回调,然后挂在到AnimationClip上的方法。AnimationEvent的 time就是动画的时间,这里赋值clip的length表示,动画执行完成后回调。那么回调函数式一个字符串,是通过消息机制回调,当前clip所在GameObject上的一个函数名来调用。


有两个办法,从Animator里面拿到AnimationClip。


第一, Controller 里面包含多个 AnimationClip 可以通过 Controller的数组animationClips 拿到所有的clip。

第二, 把挂载在Controller上的clip直接挂载到GameObject上当属性获得。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值