如何在Unity Animator中实现自定义子集版Any State功能?
Unity Animator 实现指定状态子集的类Any State功能
有两种简便方法可以实现你要的效果,不用逐个绘制过渡:
方法一:子状态机嵌套(纯可视化操作)
- 把需要触发受击过渡的A、B、C三个状态拖进同一个子状态机(Sub-State Machine)中
- 在这个子状态机内部添加一个Any State,为它设置到受击状态的过渡条件(比如你用来判断受击的
IsHurt布尔参数为true) - 这样只有当实体处于子状态机内的A/B/C状态时,这个Any State的过渡才会生效,外部状态不会触发
方法二:自定义参数+状态行为脚本
- 给Animator添加一个布尔类型的自定义参数,比如
InAllowedStates - 给A、B、C三个状态分别添加State Machine Behaviour脚本,在
OnStateEnter方法里设置animator.SetBool("InAllowedStates", true),在OnStateExit方法里设为false - 添加一个全局的Any State到受击状态的过渡,把过渡条件设置为
IsHurt == true且InAllowedStates == true - 这样只有当实体处于A/B/C状态时,受击才会触发过渡
如果不想写代码,优先选第一种方法,纯拖曳操作就能搞定。
内容的提问来源于stack exchange,提问作者ghosts
相关产品推荐
相关产品推荐

