动画机备忘

动画层

设置

Blending

        Override 表示将忽略其他层的信息,Additive 表示将在先前层之上添加动画。

sync(同步)

  • sync选项位于层设置中。
  • 勾选后,选择要作为“”的层。同步层的状态机立即得到与“”相同的状态机结构,但每个状态关联的animation clip 可以重新设置。取消勾选后,会回到原本的状态。
  • 这意味着同步层根本没有自己的状态机定义,而是“”状态机的一个实例。在同步层视图中对状态机的布局或结构所做的任何更改(例如,添加/删除状态或过渡)都是针对“”层进行的。
  • Layers 侧边栏中显示“S”符号,表示该层是同步层。

Timing

  • 通过 Timing 复选框,Animator 可调整同步层中每个动画所需的时间。
  • 取消选中:则调整同步层上的动画,将动画的长度拉伸到与“”层上的一致。
  • 选中:则动画长度将在两个动画之间平衡(基于权重)。
  • 总结:在两种情况下(选中和不选中),Animator 都将调整动画的长度。如果不选中,则“”层将是唯一母版。如果选中,则采用折中方案。

关于【动画层】的 排序混合模式

【unity实践记录】动画层的顺序和混合模式Override/Additive_煮粥侠_99的博客-CSDN博客手册上关于层顺序的介绍基本没有,只是一个不明所以的Q&A一带而过:层的排序是否重要?是的。层的优先级是按顺序从上到下的。层设置为override将始终覆盖先前的层(如果层有遮罩,则基于其遮罩)。基础层的权重值是否应始终设置为 1?或者在使用其他层时权重是否应为 0?基础层权重始终为 1,覆盖层将完全覆盖基础层。(原文:)Does the ordering of the layers matter?Yes. Layers are evaluated from to..https://blog.csdn.net/yjy99yjy999/article/details/124660875?spm=1001.2014.3001.5501


动画机行为(State Machine Behaviours)

什么是StateMachineBehaviour

StateMachineBehaviour是一类特殊脚本。

与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似, StateMachineBehaviour 脚本可以附加到状态机中的单个状态。因此可编写一些将在状态机进入退出保持在特定状态时执行的代码,例如:

  • 在进入或退出状态时播放声音
  • 仅在相应状态下执行某些测试(如地面检测)
  • 激活/控制与特定状态相关的特效

使用MachineBehaviour

在状态机中选择状态,然后在Inspector中点击【Add Behaviour】按钮,添加/创建脚本。

StateMachineBehaviour 具有一些预定义消息: OnStateEnterOnStateExitOnStateIKOnStateMoveOnStateUpdate

消息

OnStateEnter 当状态机评估此状态时,在第一个 Update 帧上进行调用。
OnStateExit 当状态机评估此状态时,在最后一个 Update 帧上进行调用。
OnStateIK 刚好在 MonoBehaviour.OnAnimatorIK 后调用。
OnStateMove 刚好在 MonoBehaviour.OnAnimatorMove 后调用。
OnStateUpdate 除第一帧和最后一帧外,在每个 Update 帧上进行调用。

公共函数 

OnStateMachineEnter 当过渡到状态机时,在第一个 Update 帧上进行调用。当过渡到状态机子状态时,不进行调用。
OnStateMachineExit 当转出 StateMachine 时,在最后一个 Update 帧上进行调用。当过渡到 StateMachine 子状态时,不进行调用。

手册详解  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不可见时禁用动画

猜你喜欢

转载自blog.csdn.net/yjy99yjy999/article/details/124632329