LUA脚本组件系统----让LUA成为C++的子集
零 简介
我们知道C++是一门静态编译执行的语言,其运行效率较高,并且从语法上支持面向对象,但和所有静态语言一样,当类定义好后在运行时就无法改变了,除此之外,c++的语法较复杂,学习代价比较高。
脚本语言LUA是一门动态语言,虽然在普遍情况下运行效率没有c++高,但其运行时可以动态的调整代码,给流程控制提供了很大的灵活性。拥有自动内存管理等特性也使其学习成本较低,使快速原型开发成为可能。
在游戏开发中,一般会用C++来开发游戏引擎的图形渲染,场景管理和物理碰撞等核心部分,而用LUA脚本来完成复杂的逻辑和流程控制。
本文的目的在于实现一种方案从而使LUA和c++紧密地结合在一起,让lua看起来就像是c++的一个子集一样.
本文分为七个部分,第一部分会通过一个代码实例来简要的了解脚本组件系统设计思想.第二部分介绍脚本组件系统产生的背景、动机与意图。第三部分介绍系统相关的基本理论。第四部分通过一个假想的需求实例来进一步说明脚本组件系统的功能和优点。第五部分描述系统的定义和特性。第六部分给出系统的实现方法和相关代码。最后部分给出一个使用脚本组件系统实现连连看游戏的实例。
一 脚本组件系统的轮廓
除了语法细节外,我们希望LUA和C++一样可以用来描述相同的对象,也就是说一个对象的一部分可以用c++来描述而另一部分可以用Lua来描述;更通俗一点讲,一个对象的成员变量和函数可以被任意划分放到C++和LUA中,而在使用上没有任何分别.
以对象”圆”为例子用代码来说明,我们可以这样来描述
一个shape.h描述了圆的形状属性,形状可以被绘制出来