Unity 实用小技能学习
Unity 复用动画控制器 Animator override controller 的简单使用
本篇文章介绍一下Unity中的 复用动画控制器:
Animator Override Controller
Animator Override Controller
是用来配合Animator Controller使用的,它让Animator Controller变得更加实用,可以让不同的使用实例的在同一状态播放不同的动作,但保留原有的结构、参数和逻辑。
Animator Override Controller
官方API介绍地址:
https://docs.unity3d.com/ScriptReference/AnimatorOverrideController.html
具体使用事例:
新建一个Animator Override Controller 和 Animator Controller,右键Create即可。
Animator Override Controller有一个小的加号‘ ’,可以看到与Animator Controller有所区别。
我们在 Animator Controller 中添加几个动画片段,如 Idle 与 Move。
此时可以通过新建多个AnimatorOverrideController来添加使用同一个Animator Controller,但是使用不同的动画片段来控制角色进行播放不同的动画了。
这样我们就可以在几个不同的角色身上挂载同一个AnimatorController,然后通过更换Animator Override Controller控制不同动画片段的播放了。
代码语言:javascript复制//通过代码更换AnimatorController的Animator Override Controller
animator.runtimeAnimatorController = animatorOverrideController;
前提是这几个不同的角色的几个动画状态应该是一致的,比如都有走路、攻击、奔跑的状态,且不同片段之间的转换条件都是一样的。
在不使用 Animator Override Controller 的情况下,我们通常的做法是一人一个 AnimatorController 来完成不同动画片段切换。
再比如在FPS游戏中,我们在有多个枪支的情况下,也可以只使用一个AnimatorController,通过添加多个Animator Override Controller来实现开枪、换弹等动画片段的转换。
优点:
- 使用的是同一份Animator Controller的转换逻辑,要修改的话非常方便,只要改一个地方就够了。
- Animator Override Controller 的文件大小比Animator Controller小很多,毕竟它只存储了状态对应的播放动画,而没记录其他转换、事件之类的各种信息。
- 在开发过程中发现,在RunTime中实时切换Animator Override Controller是可以实现的,但是实时切换 AnimatorController 只能再Editor中才可以,打包程序会报错,所以这也是使用Animator Override Controller的一个必要条件。当然如果不需要在运行过程中切换某个对象的动画控制器,那就使用AnimatorController就好啦 !
不足:优点1同时也是它的缺点,因为只能够定制播放的动画,所以如果想要在其他设置中也想要单独特化的话,就做不到了。
本篇文章就到这里啦,简单介绍一下 Animator Override Controller
的使用方法就好了,一般不是很常用。
后面有需要的话会再对 Animator Override Controller
进行一个详细的介绍。