网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果我们让NPC巡逻两个地方,比如安全的室内,和门口
如 果我们想在一个状态上附加一些状况,例如当NPC在巡逻时,让他接一个电话然后再恢复巡逻,此时如果使用有限状态机的话我们必须要新建一个打电话的状态来 做过渡,但是此时的巡逻有两个,所以能接到电话的状态也有两个,然后加了两个相同的状态,很多这样的重复的小状态使得状态机越来越复杂。如下图
这时,我们可以用分层有限状态机来解决这个问题,把多个状态机归为一层,如下图,把巡逻安全处和门口归为看守建筑,这样我们只需要有一个打电话状态就可以了。
分层有限状态机增加了一个滞后,在有限状态机中并没有,在一个普通的有限状态机中,是从初始状态开始的,在分层有限状态机中是一个嵌套的状态。注意上图有H 的圈,代表历史状态(history state),当我们第一次进入嵌套状态->看守建筑时,历史状态H表示为初始状态,之后历史状态H表示为最近处在的一个状态。
在我们的例 子中:初始状态就是看守建筑,,然后进入看到手机按住这个嵌套,巡逻安全处是初始状态。当从巡逻安全处转换到巡逻门口这个状态时,H历史状态就转变为巡逻 门口状态,此时来电话了,转换到接电话状态,接电话结束,我们回到嵌套状态中的历史状态,此时为巡逻门口,可见H历史状态就是一个临时的,便于嵌套外的状态返回到之前的嵌套内的小状态,以不至于出错,或者换回了别的状态,如果接完电话回到巡逻安全处,那就出大错了。
分层有限状态机,就这样避免了重复状态,可以实现更大的更复杂的状态。
以上原版:http://www.cnblogs.com/zhanlang96/p/4793511.html
下面说下自己看了其他一些资料后对分层状态机的理解。
对于层次状态机有父状态与子状态的区别,上述巡逻接电话的例子中,巡逻(Watch Building)是父状态,子状态是在安全室内与在门口两个状态。这里有个Histroy状态,是因为父状态需要将信息传给子状态。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**