一 前言
上一篇图文描述了C++实现游戏中应用的状态机,C++中的三大特性:封装,继承,多态得以应用,封装数据引擎访问的增,删,查,改,状态机基类以及多种状态子类实现私有private或者公共public继承它,但是发挥更大的作用是多态的使用,子类继承实现基类的virtual虚函数,在不同的事件机制触发下,迁移变换执行不同的状态,虽然毫无标准顺序可言,却是按照指定规则轨道正确行使,这是状态机设计的正确使用的最妙之处,起码是当前使用是这样,不同的需求会设计出不同高效的状态机。
那么,lua在状态机方面是如何应用的呢?
众所周知,lua是游戏开发中效率颇高的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。现在很多游戏(无论手游,还是端游),都为它的强大所折服,ps和魔兽都有使用lua,不得不承认,lua这方面做得确实很不错,虽然lua是面向过程和函数式编程,但是它的闭包和table特性使得它像C++一样,很完美的实现OO——面向对象。