You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:10:25