谷普绿色软件-绿色下载_绿色软件下载_手机应用软件_单机游戏下载_免费软件下载_绿色软件联盟网站
TAG标签| 网站地图| 设为首页| 加入收藏
当前位置:谷普绿色软件 > 软件下载 > 网络软件 > 下载工具 >

lua for windows(lua开发环境) v5.4.6

类型:下载工具

语言:简体中文

更新:2025-12-16 11:23

大小:373K

版本:v5.4.6

平台:Windows11,Windows10,Windows8,Windows7,WinXP,WinVista

标签:lua开发环境lua for wind

  • 软件介绍
  • 软件截图
  • 相关下载

Lua是一个小巧的脚本语言,标准 C 撰写而成,它可以被 C/C++ 代码调用,也可以反过来调用 C/C++ 的函数,几乎在所有操作系统和平台上都可以编译、运行。Lua 并没提供强大的库,一个完整的 Lua 讲解器不过 200KB,但它在所有脚本引擎中速度是最快的,是作为嵌入式脚本的最好选择,如此更容易让用户进行理解和维护。

lua for windows特质

1、轻量级

轻量级Lua语言的官方版本只包含一个精简的核心和最基本的库。这致使Lua体积小、启动速度快,从而合适嵌入在别的程序里。

2、可扩展

可扩展 Lua并不象其它很多"大而全"的语言那样,包含不少功能,譬如互联网通讯、图形界面等。但Lua提供了很易于用的扩展接口和机制:由宿主语言提供这类功能,Lua可以用它们,就像是本来就内置的功能一样。

3、其它特质

Lua还具备其它一些特质:同时支持面向过程编程和函数式编程;自动内存管理;只提供了一种通用种类的表(table),用它可以达成数组,哈希表,集合,对象;语言内置模式匹配;闭包;函数也可以看做一个值;提供多线程(协同进程,并不是操作系统所支持的线程)支持;通过闭包和table可以很便捷地支持面向对象编程所需要的一些重点机制,譬如数据抽象,虚函数,继承和重载等。

lua应用场景

游戏开发

独立应用脚本

Web 应用脚本

扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench

安全系统,如入侵测试系统

lua示例代码

是的,你猜对了:Hello,world!

print"Hello,world!"

一个比较复杂一点的例子,但它展示了什么是闭包:

function create|a|counter

local count=0

return function

count = count + 1

return count

end

end

create|a|counter返回一个记数器,每次调用这个记数器,都会得到一个比上次大1的值。

注意:调用的时候,假如你的调用是如此的的:

print)

那样每次输出是一样的结果,没计数的成效,只能输出计数器的地址,应该如此调用:

ct = create|a|counter

print) ||输出 1

print) ||输出 2

数据交换

介绍

Lua和C程序通过一个栈交换数据: struct lua|State

栈的序号可以从栈顶和栈底计数,从栈底计数,则栈底是1,向栈顶方向递增。从栈顶计数,则栈顶是|1,向栈底方向递减。一般都用从栈底计数的方法。栈的默认大小是20,可以用lua|checkstack修改.用lua|getTOP则可以获得栈里的元素数目。并非说在栈顶有一个整形元素。而是计算了一下栈顶元素在栈里的正index,等于元素数目。

Lua 调用C函数用的栈是临时的,调用结束之后就被销毁了。

怎么样从栈中获得从Lua脚本中的参数

假如了解Lua脚本中某个全局变量的名字,可以用

void lua|getglobal

这个函数会将name所指Lua变量的值放在栈顶.

若是在C 函数中要获得Lua调用函数用的参数:

第一用lua|getTOP检查参数数目

用lua|is 类函数测试参数的种类,做好错误处置

用lua|to 类函数将参数转换为number或者string。

lua|tonumber返回的是double

lua|tostring返回的是char*

用lua|remove从栈中删除掉元素

继续获得下一个元素。 由于每次都调用lua|remove,所以每次调用lua|tonumber,用的index都将固定是|1,即栈顶。

假如lua|istable成立,那样说明栈顶是一个table 注意 tabl e是不可以取出来的,只能把 table 里的元素一个个取出来。

第一把元素的名字压入栈顶:

lua|pushstring;

然后就能用lua|gettable调用,值会放在栈顶。同时刚刚压入的元素名字被弹出。用上面的方法,可以把这个值取出来。记得也应该lua|remove。 假如table的某一个元素也是table,重复即可。当table的所有元素都取完了,记住这个table本身还在栈里,要用lua|remove把它删除。

假如要获得的是一个数组,用lua|next可以遍历这个数组:

第一lua|pushnil,压入一个空值,然后

while!=0)

{

if)//判断元素种类,也会是string

{

arrf.addlua|tonumber);//获得元素的值

lua|remove;

}

}

lua|remove;//删除NIL

怎么样从C返回数据给Lua脚本

用 lua|push 类函数压入数据到栈中,并用return n;来告诉Lua返回了几个返回值。 Lua是天生支持多个返回值的,如

x,y = Test

Lua会依据n从栈里取相应的数据。

假如要返回一个table:

lua|newtable;//创建一个表格,放在栈顶

lua|pushstring; //压入key

lua|pushnumber;//压入value

lua|settable;//弹出key,value,并设置到table里面去

lua|pushstring;//压入key

lua|newtable;//压入value,也是一个table

lua|pushstring; //压入subtable的key

lua|pushnumber;

valuelua|settable;//弹出key,value,并设置到subtable

lua|settable;//这个时候父table的地方还是|3,弹出key,value,

//并设置到table里去

lua|pushstring;//同上

lua|pushnumber;

lua|settable;

return1;//栈里目前就一个table其他都被弹掉了。假如要返回一个数组,

//用如下代码:

lua|pushstring;

lua|newtable;

{

//atrick:otherwisetheluaenginewillcrash.ThiselementisinvisibleinLuascript

lua|pushnumber;

lua|rawseti;

for; i++)

{

lua|pushnumber;

lua|rawseti;

}

}

lua|settable;

如此产生的数组可以在Lua中如下遍历:

for i,v ini pairs

do

print

end

或者是

for i=1,table.getn

do

print

end

只有数组才能如此,name,value构成的Record不可以,table.getn也只对数组有效。

因为上述代码的高度相似性,所以比较容易达成自动生成这类代码。譬如,依据C的一个struct概念:

typedef enum{BR|9600,BR|4800,}BaudRate;

typedef struct flag

{

intonoff;

intj;

longl;

doubled;

char*name;

BaudRaterate;

}flag;可以自动产生如下代码:

bool DataToLua

{

lua|newtable;

lua|pushstring;

lua|pushnumberdata.onoff);

lua|settable;

lua|pushstring;

lua|pushnumberdata.j);

lua|settable;

lua|pushstring;

lua|pushnumberdata.l);

lua|settable;

lua|pushstring;

lua|pushnumberdata.d);

lua|settable;

lua|pushstring;

lua|pushstring);

lua|settable;

lua|pushstring;

lua|pushnumberdata.rate);

lua|settable;

return true;

}

LuaToData也是类似的。

假如用面向对象的方法封装起flag来,把DataToLua变成flag类的一个办法,就愈加便捷了。

lua用项目

Minecraft中的电脑模组

所有些为电脑和turtle(机器人)的代码都是基于Lua的,你可以用它们与有线路由器、打印机、磁盘驱动器、显示器互动。

Adobe Photoshop Lightroom

Lightroom是Adobe企业的一款摄影后期制作软件,最开始的版本由Shadowland代码撰写,后期版本部分用Lua达成,Lua代码占到代码总量的63%。

金庸群侠传lua复刻版

这个游戏,游戏迷们想来都玩过了。牛人用lua脚本重新弄了下。

魔兽世界

他的插件用的也是lua。

仙剑奇侠传五

解压游戏到资源目录可以看到游戏到脚本全部是用Lua语言撰写的。

Garry's Mod

这个游戏的所有创意工坊插件都是由LUA脚本撰写的。

Don't Starve
Klei 开发的一款动作冒险类求生游戏,于2013年4月23日在PC上发行。游戏及所有创意工坊插件都是由LUA脚本撰写的。

TAG标签:lua开发环境(1)lua for wind(1)

转载请说明来源于谷普绿色软件(https://www.guixh.com)

本文地址:https://www.guixh.com/soft/12584.html

郑重声明:文章来源于网络作为参考,本站仅用于分享不存储任何下载资源,如果网站中图片和文字侵犯了您的版权,请联系我们处理!邮箱3450399331@qq.com

应用截图

相关软件