赞
踩
主要的层次结构式是, 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上当属性获得。
- AnimatorOverrideController overrideController = new AnimatorOverrideController();
- overrideController.runtimeAnimatorController = anim.runtimeAnimatorController;
- overrideController["clipName"] = newClip;
- anim.runtimeAnimatorController = overrideController;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。