- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在你的游戏中应用LUA
PAGE
PAGE 22
在你的游戏中应用LUA (ZT)
在你的游戏中应用Lua(1):在你的游戏代码中运行解释器 ??通常,你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要的信息。 ??是的,或许你认为这样就足够了,为什么还要使用Lua呢? ??应用于“配置”这个目的,Lua提供给你更为强大,也更为灵活的表达方式,在上一种方式中,你无法根据某些条件来配置你的游戏,Lua提供给你灵活的表达方式,你可以类似于这样来配置你的游戏: if player:is_dead() then
do_something()
else
do_else()
end
更为重要的是,在你做了一些修改之后,完全不需要重新编译你的游戏代码。 通常,在游戏中你并不需要一个单独的解释器,你需要在游戏来运行解释器,下面,让我们来看看,如何在你的代码中运行解释器: //这是lua所需的三个头文件 //当然,你需要链接到正确的lib #include lua.h
#include lauxlib.h
#include lualib.h
int main(int argc, char *argv[])
{
lua_State *L = lua_open();
luaopen_base(L);
luaopen_io(L);
const char *buf = print(hello, world!);
lua_dostring(buf); // luaL_dostring(L,buf);原文有问题
lua_close(L);
return 0;
}程序输出:hello, world! 有时你需要执行一段字符串,有时你可能需要执行一个文件,当你需要执行一个文件时,你可以这么做: lua_dofile(L, test.lua); 看,非常简单吧。 在你的游戏中应用Lua(1):Getting Value 在上一篇文章我们能够在我们的游戏代码中执行Lua解释器,下面让我们来看看如何从脚本中取得我们所需要的信息。 首先,让我来简单的解释一下Lua解释器的工作机制,Lua解释器自身维护一个运行时栈,通过这个运行时栈,Lua解释器向主机程序传递参数,所以我们可以这样来得到一个脚本变量的值: lua_pushstring(L, var); //将变量的名字放入栈 lua_gettatble(L, LUA_GLOBALSINDEX);变量的值现在栈顶 假设你在脚本中有一个变量 var = 100 你可以这样来得到这个变量值: int var = lua_tonumber(L, -1); 怎么样,是不是很简单? Lua定义了一个宏让你简单的取得一个变量的值: lua_getglobal(L, name) 我们可以这样来取得一个变量的值: lua_getglobal(L, var); //变量的值现在栈顶 int var = lua_tonumber(L, -1); 完整的测试代码如下: #include lua.h
#inculde lauxlib.h
#include lualib.h
int main(int argc, char *argv[])
{
lua_State *L = lua_open();
luaopen_base(L);
luaopen_io(L);
const char *buf = var = 100;
lua_dostring(L, buf); // luaL_dostring
lua_getglobal(L, var);
int var = lua_tonumber(L, -1);
assert(var == 100);
lua_close(L);
return 0;
}在你的游戏中应用Lua(1):调用函数 假设你在脚本中定义了一个函数: function main(number) number = number + 1 return number end 在你的游戏代码中,你希望在某个时刻调用这个函数取得它的返回值。 在Lua中,函数等同于变量,所以你可以这样来取得这个函数: lua_getglobal(L, main);//函数现在栈顶
#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s))
#define LUA_GLOBALSINDEX (-10002)
取表中的元
您可能关注的文档
最近下载
- 最新:2024湖北省医疗服务价格项目及医保支付目录(完整版) .pdf VIP
- 高标准农田建设项目 投标方案(技术方案).doc
- 【桂科版】《综合实践活动》五下 第6课《购物的学问有趣的购物体验》课件.pptx VIP
- 深刻领会二十届三中全会精神,进一步全面深化改革-2025执业药师继续教育答案.docx VIP
- m埋地钢管结构计算1.0.xls VIP
- VTE相关知识培训课件.pptx VIP
- 2025年 河南统招专升本 公共英语 真题及参考答案.pdf VIP
- 《肿瘤治疗相关心功能不全防治与管理专家共识》解读(2)(1).pptx VIP
- 为爱痴狂 钢琴独奏版 钢琴谱五线谱.pdf VIP
- 机床夹具拆装与调整实验实验报告模板.pdf VIP
原创力文档


文档评论(0)