Unity3D Animator 动态添加事件回调和替换动画
来源:互联网 发布:淘宝店铺优化排名 编辑:程序博客网 时间:2024/05/17 20:44
主要的层次结构式是, 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上当属性获得。
值得注意的是,经过测试,挂载clip事件的函数,一定要放到Animator的play或是设置相关属性之前。Animator才能播放。Play方法,有多个重载,其中有一个可以传入StateName通过名字,来直接播放特定的状态动画。而不是走默认状态切换流程。这样,我们可以再配置Controller的时候,就设置一个默认的状态,其他的状态都悬空,用代码来手动调用,而不是通过状态条件来自动处理。
既然,controller里面的clip是挂载的,那么运行时也是有方法可以修改的。
AnimatorOverrideController overrideController = new AnimatorOverrideController();overrideController.runtimeAnimatorController = anim.runtimeAnimatorController;overrideController["clipName"] = newClip;anim.runtimeAnimatorController = overrideController;
clipName 就是原来AnimationClip的name, 这样可以动态的替换掉播放的动画。
2 0
- Unity3D Animator 动态添加事件回调和替换动画
- Unity3D 新动画Animator的事件添加和使用
- 动画状态机Animator-Unity3d
- Animator 添加动画时间回调
- Unity3D中的Animator动画控制
- 仿**宝钱额添加动画 animator
- Unity动画系统 动态添加动画事件
- Unity3D之Mecanim动画系统:Animator Controller
- unity中处理animator动画事件
- Unity3D 新版动画状态机Animator中的动画速度控制
- Unity-Animator(ReadOnly)添加关键帧事件
- Unity 动态加载Animator Event 事件
- animator动画
- Animator动画
- Unity3d 如何将Animation动画被Animator使用?
- 【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记
- unity3D Animator 播放界面动画第一帧闪烁问题
- 【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记
- Linux配置Netconsole远程打印日志信息
- php中工厂方法的两个特殊例子
- JavaScript中concat不起作用
- DOM操作-事件对象
- Oracle-单表合并列
- Unity3D Animator 动态添加事件回调和替换动画
- Git管理多个远程仓库(GitHub和Coding)
- LeetCode 034
- 解决快递100普通key不能查询顺丰、申通等快递问题
- Java集合类之List性能比较
- 从一个URL下载原始数据,基于byte字节,得到byte数组
- Java集合类之Map
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- Java集合类之Set