今天读了 Game Programming Patterns
的 State
章节.深感改模式对我目前代码优化的帮助巨大.于是决定写个demo来实现一下
文章中是用C++
作为描述语言的,而对于使用 Unity 引擎, C# 语言的我来说,需要做一些适应性的修改.
这个demo
主要涉及的是玩家控制
FSM(有限状态机)
为什么要使用有限状态机
在回答这个问题之前,不妨想一想你自己之前是如何实现玩家控制的,就以跳跃为例
或许你会这样写
1 | public void Jump() |
显然这个函数有个大问题,只要按下空格键,你就会一直往上跳,最后你的角色就飞了起来,这当然不是你想要的.最简单的修补办法是给他添加上一个isJumping
或者isOnGround
的布尔判断
再然后,你又想给你的角色添加一个冲刺的功能,如果你什么也不做,神奇的玩家或许会对冲刺中按下跳跃键后发生的事情感到啼笑皆非,这时候你又需要添加一个isDashing
的布尔判断.然而实际开发中的需求可不会像上面的例子一样简单,你也不想你的代码里全是各种if else
吧.