读书人

D3D游戏编程系列(9):自己动手编写r

发布时间: 2013-10-14 12:54:46 作者: rapoo

D3D游戏编程系列(九):自己动手编写rpg游戏之lua脚本的引入

现在脚本可谓在游戏的开发中占有举足轻重的地位啊,从python到lua,甚至还有自己设计脚本语言的,其实说到脚本,我倒是很喜欢javascript的,可以应用有限,很难运用于游戏中来,好了废话不多说,我们回到正题来。

游戏中为什么要加入脚本呢,其实是为了更好的扩展性,比如人物的初始化设置,对话内容,攻击模式甚至剧情走向都可以用脚本来编写,因为如果把这些直接嵌在游戏主程序里面不要生成的文件庞大冗长,而且扩展性极差,如果我们要改变一个很小的设置,就必须要重新编译整个游戏工程,很显然,是不划算的,所以,便有了脚本的出现,再说说脚本的执行效率问题,我们知道,脚本的执行速度普遍比编译语言要低,那么我们就要在众多脚本中选择一个高效轻量的脚本来作为我们的首选,于是lua便映入了我们的视线。

lua这个语言学起来还是蛮简单的,可能就是上手会有点变扭,因为他都是以栈作为操作基础的,我们调用它的一个内部函数基本上都是改变lua栈的运行状态,不过,在理解这一点后,上手还是很快的。

lua_State *pL=m_Lua.GetLua();lua_tinker::class_add<CLuaCall>(pL,"RPG");lua_tinker::class_con<CLuaCall>(pL,lua_tinker::constructor<CLuaCall>);lua_tinker::class_def<CLuaCall>(pL,"AddTree",&CLuaCall::AddTree);lua_tinker::class_def<CLuaCall>(pL,"AddEnemy",&CLuaCall::AddEnemy);lua_tinker::class_def<CLuaCall>(pL,"AddHuman",&CLuaCall::AddHuman);lua_tinker::class_def<CLuaCall>(pL,"AddText",&CLuaCall::AddText);

就是这么几句类的声明和类函数声明的代码,很简单也很清晰的流程,当然,这些代码在游戏初始化的时候,也就是载入脚本前就应该调用,否则找不到类或者函数的声明会出错哦。

本文有不足之处,还望大家多多指正。




读书人网 >编程

热点推荐