关于HSM

@LTGVE 你能确定明日方舟的状态机是一套HSM而不是FSM吗?我这边是专门研究Modifier、Node的小编,对State不太了解,不过Node内将状态机称为FSM(_restartFSM)——调零修罗留言) 2026年8月11日 (二) 04:19 (CST)

然后,之所以状态机页面难写,就是因为其中废案太多了,好多东西还是Ability主导,State假装自己在干活,干扰太多。有些明显的错误我修了修,剩下的可能需要复核,不过还是很高兴能看到有新人来编辑这些机制页面——调零修罗留言) 2026年8月11日 (二) 04:58 (CST)

根据dll的结构来看,他定义了个HierachyStateMachine<StateType, DataType, BlackboardType> : StateMachine where StateType : struct where BlackboardType : class, StateMachine.IBlackboard 的状态机,里面确实包含了子状态机及子状态接口,不过似乎没有显式调用。不过,Character.States里面有个ConstructStateMachine的方法来创建了上面的状态机及初始化状态,由Character初始化时调用;Enemy.States里面同样也是有个ConstructStateMachine的方法来创建状态机和初始化状态,由Enemy初始化时调用。两个类的States里面都包含了一个继承于HSM中的StateNode的BasicState,States里所有的状态的类都继承于这两类States里的BasicState,但都是没有主要逻辑,所以我猜yj可能是真写了个HSM当FSM来用了。不过受限于技术, 部分逻辑未能看全,没有显式调用的可能跑去lua文件里面了。 --LTGVE留言) 2026年8月11日 (二) 09:29 (CST)

还有就是我曾看见过一个敌人在冻结的状态下处于浮空,在FreezeState.CheckSwitchOut中明确可切换到浮空状态,但里面的逻辑追踪起来实在是太乱了,我也不好去判断到底是不是处于并行状态还是其他效果主导。 --LTGVE留言) 2026年8月11日 (二) 09:58 (CST)

返回到“状态机”页面。