怎么在lua代码中unity3d退出游戏代码整个游戏

在你的游戏中应用LUA(ZT)
在你的游戏中应用
):在你的游戏代码中运行解释器
通常,你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本
文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要的信息。
是的,或许你认为这样就足够了,为什么还要使用
这个目的,
提供给你更为强大,也更为灵活的表达方式,在上一种方式中,你无法根据
某些条件来配置你的游戏,
提供给你灵活的表达方式,你可以类似于这样来配置你的游戏:
ifplayer:is_dead()then
do_something()
更为重要的是,在你做了一些修改之后,完全不需要重新编译你的游戏代码。
通常,在游戏中你并不需要一个单独的解释器,你需要在游戏来运行解释器,下面,让我们来看看,如何
在你的代码中运行解释器:
所需的三个头文件
当然,你需要链接到正确的
"lauxlib.h"
"lualib.h"
lua_State*L=lua_open();
luaopen_base(L);
luaopen_io(L);
"print('hello,world!')"
lua_dostring(buf);
//luaL_dostring(L,buf);原文有问题
lua_close(L);
程序输出:
hello,world!
有时你需要执行一段字符串,有时你可能需要执行一个文件,当你需要执行一个文件时,你可以这么做:
lua_dofile(L,"test.lua");
看,非常简单吧。
在你的游戏中应用
GettingValue
在上一篇文章我们能够在我们的游戏代码中执行
解释器,下面让我们来看看如何从脚本中取得我们所
需要的信息。
首先,让我来简单的解释一下
解释器的工作机制,
解释器自身维护一个运行时栈,通过这个运行时
解释器向主机程序传递参数,所以我们可以这样来得到一个脚本变量的值:
lua_pushstring(L,"var");//
将变量的名字放入栈
lua_gettatble(L,LUA_GLOBALSINDEX);
变量的值现在栈顶
假设你在脚本中有一个变量
你可以这样来得到这个变量值:
intvar=lua_tonumber(L,-1);
怎么样,是不是很简单?
定义了一个宏让你简单的取得一个变量的值:
lua_getglobal(L,name)
我们可以这样来取得一个变量的值:
lua_getglobal(L,"var");//
变量的值现在栈顶
intvar=lua_tonumber(L,-1);
完整的测试代码如下:
"lauxlib.h"
"lualib.h"
lua_State*L=lua_open();
luaopen_base(L);
luaopen_io(L);
lua_dostring(L,buf);//
luaL_dostring
lua_getglobal(L,
var=lua_tonumber(L,-1);
assert(var==100);
lua_close(L);
在你的游戏中应用
):调用函数
假设你在脚本中定义了一个函数:
functionmain(number)
number=number+1
returnnumber
在你的游戏代码中,你希望在某个时刻调用这个函数取得它的返回值。
中,函数等同于变量,所以你可以这样来取得这个函数:
lua_getglobal(L,"main");//
函数现在栈顶
lua_getglobal(L,s)lua_getfield(L,LUA_GLOBALSINDEX,(s))
LUA_GLOBALSINDEX(-10002)
取表中的元素
voidlua_getfield(lua_State*L,intindex,constchar*k)
操作:arr=Stack[index]//arr肯定是表
Stack.push(arr[k])
取表中键为k的元素,这里的表是由index指向的栈上的一个表
栈高度+1,栈顶元素是(Stack[index])[k]注意,该操作将触发__index元方法
现在,我们可以调用这个函数,并传递给它正确的参数:
lua_pushnumber(L,100);//
将参数压栈
lua_pcall(L,1,1,0);//
调用函数,有一个参数,一个返回值
保护下调用一个lua函数
intlua_pcall(lua_State*L,intnargs,intnresults,interrfunc)
参数,行为和lua_call都一样,如果在调用中没有发生任何错误,lua_pcall==lua_但是如果有错误
发生时,lua_pcall会捕获它
errfunc指出了Stack上的一个元素,这个元素应该是一个函数,当发生错误的时候
ef=Stack[errfunc]
value=ef(errmsg)
Stack.push(value)
也就是说,在错误的时候,errfunc指定的错误处理函数会被调用,该处理函数的返回值被压到栈上.
默认情况下,可以给errfunc传值0,实际的效果是指定了这样一个函数做出错处理functiondefaulterr
(errmsg)returnerrmsgend.
本函数有返回值LUA_ERRRUN运行时错误LUA_ERRMEM内存分配错误[注意,这种错会导致lua调用
不了错误处理函数]LUA_ERRERR运行错误处理函数时出错了,写程序的时候必须检查返回值:)
强烈推荐该函数,不过事实上大家也都用的这个函数:)
返回值现在栈顶
相关资料推荐
lua和C/C++栈交互的简单入门资料
有关Lua一些资料
在你的游戏中应用LUA.doc
音乐、电影、游戏在培训中的应用
在你的游戏中应用LUA
集中式和分布式操作系统中的同步互斥比较教学.doc
当前资料暂无简介~
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
刚刚上传了
在此可输入您对该资料的评论~
资料阅读排行
该用户的其它资料
请选择举报的类型
赌博犯罪类
资料评价:
所需积分:5cocos lua 退出游戏免费文档下载_文档下载
亿万文档 免费下载
当前位置: > cocos lua 退出游戏
cocos lua 退出游戏
8.随机四个 10 以内数,请将这四个数依次从大到小排序 9.请将 1-20 的数字随机排序 10.如果用 cocos2d-x 的 lua 来做叶子飘落的效果,大体的思路是? ...9秒学院总结Cocos2d-X面试题_工作总结/汇报_总结/...9 秒学院 移动游戏开发培训 1.autorelease 和 ...lua|javascript& 3,这样我们就可以在 2dx 的 ...一直用第一种方式, 但偶要告诉你, 通过 Lua 的 C 库执行才是游戏中 常用...lua_dostring(L, line) 执行此行 * lua_close(L) 关闭 Lua 执行器 例 e...quick-cocos2d-x 学习系列之二2048游戏_计算机软件...2. 代码执行逻辑 2.1 Main.lua 这个 LUA 文件是...文件创建了一个新的场景,显 示场景后完毕退出 game...这是一个 C++ Cocos2d-iPhone 项目的版本。Cocos2d-X 发展的重点是围绕 Cocos2d 跨平台,Cocos2d-x 提供的框架。手机游戏,可以写在 C++或者 Lua 中,使用 ...前言调研的目的是为新的游戏项目选择的技术方向,本文将主要以介绍 quick 为主,因为 quick 其实就是用 cocos-lua,只是在上层框架有扩展而已,把扩展的 部分直接去掉...手机游戏, 可以写在 C++或者 Lua 中, 使用 API 是 Cocos2d-iPhone 完全兼容...5.2.8 游戏结束场景游戏最后结束需要保存分数并退出,退出界面如图 5.2.8: 18...

我要回帖

更多关于 cocos2d lua 退出游戏 的文章

 

随机推荐