动画层
Blending
????????Override?表示将忽略其他层的信息,Additive?表示将在先前层之上添加动画。
sync(同步)
- sync选项位于层设置中。
- 勾选后,选择要作为“源”的层。同步层的状态机立即得到与“源”相同的状态机结构,但每个状态关联的animation clip 可以重新设置。取消勾选后,会回到原本的状态。
- 这意味着同步层根本没有自己的状态机定义,而是“源”状态机的一个实例。在同步层视图中对状态机的布局或结构所做的任何更改(例如,添加/删除状态或过渡)都是针对“源”层进行的。
- Layers 侧边栏中显示“S”符号,表示该层是同步层。
Timing
- 通过 Timing 复选框,Animator 可调整同步层中每个动画所需的时间。
- 取消选中:则调整同步层上的动画,将动画的长度拉伸到与“源”层上的一致。
- 选中:则动画长度将在两个动画之间平衡(基于权重)。
- 总结:在两种情况下(选中和不选中),Animator 都将调整动画的长度。如果不选中,则“源”层将是唯一母版。如果选中,则采用折中方案。
动画机行为(State Machine Behaviours)
什么是StateMachineBehaviour
StateMachineBehaviour是一类特殊脚本。
与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似, StateMachineBehaviour 脚本可以附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码,例如:
- 在进入或退出状态时播放声音
- 仅在相应状态下执行某些测试(如地面检测)
- 激活/控制与特定状态相关的特效
使用MachineBehaviour
在状态机中选择状态,然后在Inspector中点击【Add Behaviour】按钮,添加/创建脚本。
StateMachineBehaviour 具有一些预定义消息:?OnStateEnter、OnStateExit、OnStateIK、OnStateMove、OnStateUpdate。
消息
公共函数?
手册详解? https://docs.unity3d.com/cn/2020.3/ScriptReference/StateMachineBehaviour.html
参数
使用int参数性能更好:
用?Animator.StringToHash?函数来获取整数标识符值(参数的int值)。例如:
runState = Animator.StringToHash("Base Layer.Run");
animator.SetBool(runState, false);
Animator组件
Culling Mode: 建议设置为Cull Update Transforms 或?Cull Completely 以节省性能:renderer不可见时禁用动画 |
|