有限状态自动机,状态机( 二 )


它会创建一对数据结构和一系列十分有用的变量 。现在我们先来看看这些变量state - 这个变量是当前状态的标志位 。这个脚本中将会包含在对象step事件中执行的代码 。state_next - 当我们切换状态时,我们希望在切换之前当前状态能执行完毕,因此我们调用这个脚本来切换状态,同时更新这个值,然后上述"state"变量将在"End Step"事件中发生变化 。
state_name - 这个变量用于获取保存当前状态的名称(创建时设定的名称)state_timer - 这个变量用于记录当前状态持续的“step”数(即运行了多少帧),实用程度绝对超乎想象state_map - 一个ds_map数据结构,把你设定的状态名称作为键名保存进来,state_stack - 一个用来记录你历史状态的数据结构 。
可以用来实现一些状态机的进阶功能,比如变回到之前的状态 。state_new - 这是个非常有用的变量,当你切换到某个状态时,有可能你希望该状态处于初始化状态,比如速度设为0,或者更新精灵等等,这些情况十分常见 。这时候你只需要在状态的最开始将这个值设为“true”即可完成这一切操作 。state_var[0] - state_var 这个变量比较特别 。
这是一个用来存储某个状态的持续时间的数组 。因为我发现我自己经常会有这样的需求——“我想要清楚地跟踪并记录这个状态下的一些信息……但是别的状态没这种需求”那我该怎么办?每次有这种需求的时候都新建一个变量?这不是很荒谬嘛?所以,我用“state_var”来作为替代品,把这个数组作为针对该状态的一个便笺本,或是剪贴板,取决于你的用法 。
这个数组可以记录我所需要的值,因此我不必新建变量来进行记录,可能有点说不太清楚,但这个非常有用 。如果你下载并仔细看了我提供的脚本,你可能会注意懂我在里面放了一些建议性的变量(也许你的游戏用得着) 。比如,通常情况下"state_can_interrupt"或"state_is_invincible" 这些变量都会派得上用场 。

推荐阅读