animator和animation区别
A:1.Animation控制一个动画播放的各类方法和数据(当然也可以代码进行动画切换),debug模式切换为Legacy。
2.Animator则可以实现控制多个动画的播放,切换,叠加等一级对骨骼动画控制等更复杂的效果,是一个动画状态机。除却必要的动画文件,还会生成一个.controller结尾的文件,也因此占内存比Animation更大
Animator Layers
A:分层,高层覆盖下层(例如:边走边打)
层设置:Weight:权重 Mask:Mask Blending:叠加模式
Blend Tree
A:混合,多状态可以处于中间状态(例如:方向移动) BlendTree
子集动画Sub-State
A:处理多个相同进出条件的动画(例如:技能)
IK
A: IK 反向动力学。是根据骨骼的终节点来推算其他父节点的位置的一种方法 (例如:瞄准、人朝着镜头看)
Mask
①humanoid类型使用
②Generic类型
先导入Avatar
AnimationEvent
您可以使用动画事件增加动画剪辑的实用性。动画事件允许您在时间轴中的指定点调用对象脚本中的函数。
由动画事件调用的函数也可以接受一个参数。该参数可以是 float
、string
、int
或 object
引用或 AnimationEvent 对象。AnimationEvent 对象具有一些成员变量,通过这些变量可将浮点、字符串、整数和对象引用以及有关触发函数调用的事件的其他信息一次性传递给该函数。
// 此 C# 函数可由动画事件调用
public void PrintFloat (float theValue) {
Debug.Log ("PrintFloat is called with a value of " + theValue);
}
要将动画事件添加到当前播放头位置的剪辑,请单击 Event 按钮。要将动画事件添加到动画中的任何点,请在要触发事件的时间点上双击__事件__线。添加事件后,可拖动鼠标重新定位该事件的所在位置。要删除事件,请选择该事件并按 Delete 键,或右键单击该事件并选择 Delete Event。
优化
Q:播放动画的主要耗时在哪
A:实时算的,简单的线性插值,采样动画, 以及插值混合,叠加
Q:为什么rebind会有较高耗时
A:unity实现的不好,源数据和runtime数据是两套,bind相当于从源数据重建了一套Runtime数据
Q:融合消耗高如何处理
A: