![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lua
Ftworld21
专注游戏开发。
展开
-
c++与Lua相互调用
luna库支持c++与Lua相互调用。1. c++调用Luacpp_test.cpp:lua_lib.lua:使用命令g++ cpp_test.cpp -lluna -llua -ldl -std=c++17 -o test编译后运行test:可以发现能够成功调用table中的some_func函数。2. Lua调用c++,导出c++函数(对象)test.h:test.cpp:main.cpp:在luna目录下make编译后会产生一个...原创 2021-10-19 20:33:04 · 719 阅读 · 0 评论 -
Lua常用c接口
Lua常用函数说明_和尚的专栏-CSDN博客原创 2021-09-27 20:40:01 · 309 阅读 · 0 评论 -
Lua静态链接库
Lua源码可以先编译成静态库C/C++ 静态链接库(.a) 与 动态链接库(.so) - 52php - 博客园c/c++静态库和动态库制作 - 简书原创 2021-09-27 20:39:14 · 386 阅读 · 0 评论 -
popen
Lua io.popen() - 简书原创 2021-09-24 16:12:41 · 152 阅读 · 0 评论 -
Lua内存管理
https://blog.csdn.net/liaoshengg/article/details/81327114原创 2021-08-18 10:29:24 · 575 阅读 · 0 评论 -
lua堆栈操作
https://blog.csdn.net/lovemysea/article/details/5268255原创 2021-07-19 14:10:07 · 214 阅读 · 0 评论 -
lua的os标准库
https://www.junmajinlong.com/lua/os_lib/原创 2021-06-23 14:36:37 · 127 阅读 · 0 评论 -
匹配模式
https://juejin.cn/post/6874512568913199117http://lua-users.org/wiki/FrontierPatternhttps://www.cnblogs.com/zhong-dev/p/4044568.htmlhttps://www.coder.work/article/6850306https://blog.csdn.net/cfy_yufeng/article/details/83261144https://blog.csdn.ne原创 2021-05-25 11:03:00 · 1042 阅读 · 0 评论 -
有限状态机
一个lua状态机,随着时间的流逝,执行不同的动作。136 function test_fsm()137 138139 if not test_fsm_state then140 return141 end142143 if test_fsm_start_time == 0 then144 test_fsm_start_time = get_cur_time()145 test_last_check_ti...原创 2021-05-08 17:33:03 · 170 阅读 · 0 评论 -
默认形参
lua没有默认形参这个说法,可以自己实现一下。https://www.itranslater.com/qa/details/2124742160116352000https://www.cnblogs.com/Braveliu/p/10737235.html原创 2021-05-07 19:23:35 · 128 阅读 · 0 评论 -
环境_ENV
_ENV可以让代码运行在一个隔离的环境里。https://blog.codingnow.com/2011/12/lua_52_env.htmlhttps://blog.csdn.net/Ftworld21/article/details/116033771https://blog.csdn.net/gulan0/article/details/88696032原创 2021-04-29 17:05:19 · 224 阅读 · 0 评论 -
lua常用函数
1. tonumber函数原型:tonumber (e [, base])默认是按照10进制进行转换成相应的数字。参考资料:https://www.jianshu.com/p/e51348da59b82. gmatch原型:string.gmatch (s, pattern)解释:返回一个迭代器函数,每一次调用这个函数,返回一个在字符串s找到的下一个符合pattern描述的子串。如果参数pattern描述的字符串没有找到,迭代函数返回nil。https://www.ji.原创 2021-04-22 22:00:22 · 2012 阅读 · 0 评论 -
可变参数
参考资料:https://www.cnblogs.com/guomengkai/p/13749218.htmlhttps://hypc-pub.github.io/lua-tutorial/chapter05/arguments.html原创 2021-04-16 15:15:18 · 66 阅读 · 0 评论 -
上值
有点类似static变量参考资料:https://blog.csdn.net/qq_34018840/article/details/106817365https://luyuhuang.tech/2020/03/20/lua53-environment.html原创 2021-04-16 11:23:04 · 454 阅读 · 0 评论 -
回调函数
在lua中回调函数也用的比较多,而且比c++的回调函数更加方便,因为不需要定义函数指针。参考资料:https://blog.csdn.net/shimazhuge/article/details/41680909原创 2021-04-15 15:46:12 · 84 阅读 · 0 评论 -
lua_gettop
返回堆栈上元素的个数https://www.jianshu.com/p/c850e687cf33原创 2021-04-02 22:02:17 · 1029 阅读 · 0 评论 -
lua_State
lua_State 中放的是 lua 虚拟机中的环境表、注册表、运行堆栈、虚拟机的上下文等数据。https://my.oschina.net/xlplbo/blog/314956https://blog.csdn.net/chenjiayi_yun/article/details/24304607http://geekluo.com/contents/2014/04/12/6-lua-state-structure.html...原创 2021-04-02 21:54:30 · 248 阅读 · 0 评论 -
打印函数调用栈
print(debug.traceback())https://blog.csdn.net/fightsyj/article/details/88173996原创 2021-04-02 14:37:31 · 288 阅读 · 0 评论 -
_G表
_G是一张表,保存了lua所用的所有全局函数和全局变量https://blog.csdn.net/whereismatrix/article/details/79704421https://blog.csdn.net/HQ354974212/article/details/89459958原创 2021-04-02 10:16:32 · 107 阅读 · 0 评论 -
异常处理
pcall与xpcall,用于捕获异常并且继续执行程序https://qinguan.github.io/2018/04/14/lua-pcall-and-xpcall/原创 2021-04-01 15:26:30 · 110 阅读 · 0 评论 -
rawset和rawget
参考资料:https://blog.csdn.net/haobaworenle/article/details/70262047原创 2021-03-31 16:31:55 · 110 阅读 · 0 评论 -
表的拷贝
表的赋值相当于引用,拷贝的话需要其他的实现方式参考资料:http://lua-users.org/wiki/CopyTable原创 2021-03-31 11:02:26 · 99 阅读 · 0 评论 -
import和require
https://zhidao.baidu.com/question/2079846555350459028.htmlhttps://www.taodudu.cc/news/show-3037298.html原创 2021-03-26 11:58:04 · 144 阅读 · 0 评论 -
a[i]与a.i
a={i=2,3}i = 1print(a.i)print(a[i])分别打印2,3, a.i是访问a中的i,相当于结构体中访问一个元素,而a[i]是访问数组中下标为i的元素参考资料:https://blog.csdn.net/wujie_03/article/details/71171489原创 2021-03-05 23:36:16 · 1724 阅读 · 0 评论 -
数据结构
一.数组二.链表一个简单的链表可以如下实现:list = nillist = { next = list, value = 5}list = { next = list, value = 4}list = { next = list, value = 3}while list do --遍历链表 print(list.value) list = list.nextend...原创 2021-03-03 23:02:34 · 108 阅读 · 1 评论 -
luasocket库
运行时会报错:/usr/local/bin/lua: ./test.lua:911: attempt to index global 'socket' (a nil value)stack traceback: ./test.lua:911: in main chunk [C]: ?使用local socket = require("socket")就可以了。参考资料:https://my.oschina.net/freeblues/blog/679617https:/...原创 2021-02-24 16:11:27 · 690 阅读 · 0 评论 -
深入理解Lua协程的实现
协程是lua中一大利器,使用coroutine.create创建协程,使用coroutine.resume调用协程中的实例,使用coroutine.yield可以挂起一个协程,需要的时候再使用coroutine.resume恢复,并且可以从停止的地方开始执行。resume和yield的配合强大之处在于,resume处于主程中,它将外部状态(数据)传入到协同程序内部;而yield则将内部的状态(数据)返回到主程中。...原创 2021-02-23 12:01:49 · 446 阅读 · 0 评论 -
点,冒号与self
-- 点号定义和点号调用: 有点类似数据索引的访问方式girl = {money = 200}function girl.goToMarket(girl ,someMoney) girl.money = girl.money - someMoneyendgirl.goToMarket(girl ,100)print(girl.money)-- 参数self指向调用者自身(类似于c++里的this 指向当前类)girl = {money = 200}functio...原创 2021-02-20 14:32:32 · 123 阅读 · 0 评论 -
输入输出
lua的输入输出模型较为简单,基本上都是使用io模块来完成的。标准输入输出:使用io.read(...)完成输入,参数可以为:"*a":读取所有"*l":读取一行,忽略换行"*L":读取一行,保留换行"*n":读取一个数字number:读取number个字符同时可以使用io.write(...)完成输出,需要使用io.write("\n")才能输出缓冲区的数据。文件输入输出:对于标准输入输出,只需要更换流的输入与输出即可,使用io.input(...),io.o.原创 2021-02-20 11:50:46 · 125 阅读 · 0 评论 -
枚举
lua中并没有自带枚举类型,需要自己实现:https://www.cnblogs.com/vsirWaiter/p/8183941.htmlhttp://www.cppblog.com/jianguhan/archive/2008/10/26/65066.html在游戏开发常常与结构体配合使用(相当于原表):M.INFO ={ [M.EINFO.ACTION] = {ani = 480, posx = 230, posy="200}, [M.EINFO.LEVELUP] ...原创 2021-02-19 15:57:00 · 95 阅读 · 0 评论 -
lua练习题
https://blog.csdn.net/XIANG__jiangsu/article/details/78262439https://blog.csdn.net/earbao/article/details/51767543https://blog.csdn.net/ywjun0919/article/details/50603148https://www.cnblogs.com/carekee/articles/1745202.htmlhttps://blog.csdn.net/hun原创 2021-02-19 11:05:41 · 464 阅读 · 0 评论 -
连接数据库
使用LuaSQL连接mysql数据库步骤:1.luasql.mysql2.connect3.execute4.fetch原创 2020-08-19 23:39:09 · 90 阅读 · 0 评论 -
面向对象与类
lua虽然没有类,但是可以通过table+function模拟出来。例如:Rect = {area = 0, len = 0, width = 0}function Rect:new (o,len,width) o = o or {} setmetatable(o, self) self.__index = self self.len = len or 0 self.width = width or 0 self.area = len*width; return oe...原创 2020-08-19 23:33:20 · 83 阅读 · 0 评论 -
垃圾回收
lua采用垃圾自动回收的方式对访问不到的死对象进行收集。它实现了一个增量标记-扫描收集器。提供了collectgarbage函数完成对垃圾的收集。原创 2020-08-19 09:16:33 · 68 阅读 · 0 评论 -
错误处理,pcall,xcall
错误处理包括:语法错误运行错误语法错误比较容易定位,但是运行错误需要一些额外的工具来辅助定位:assert()error()pcallxcalldebug原创 2020-08-19 09:04:51 · 258 阅读 · 0 评论 -
文件io的使用
一.简单模式读:file=io.open("test.lua","r")io.input(file)print(io.read())io.close(file)写:file=io.open("test.lua","a")io.output(file)io.write("-- test.lua 文件末尾注释")io.close(file)二.安全模式读:file=io.open("test.lua","r")print(file:read())file:c...原创 2020-08-18 09:16:50 · 107 阅读 · 0 评论 -
元表
元表是一种用来定义对table或者userdata操作方式的表。有点c++中重载的味道。对指定table设置元表(metatable):mytable={}mymetatable={}setmetatable(table,metatable)以上代码可以直接写为mytable=setmetatable({},{})获取元表:getmetatable(mytable)__index元方法:用来对表访问__newindex元方法:用来对表更新__call元方法..原创 2020-08-17 09:16:30 · 515 阅读 · 0 评论 -
模块与包
一个.lua文件可以封装为一个模块以供其他模块调用,一般来说文件名要与模块名类似,然后使用require引用模块,例如:test_module.lua:test_module={}test_module.num = "2"function test_module.fun1() io.write("公有函蔲fun1\n");endlocal function func2() print("私有函数fun2\n")endfunction test_module.fun...原创 2020-08-16 15:27:42 · 84 阅读 · 0 评论 -
Lua表的简介
表可以用来创建不同的数据类型,比如数组和字典,也就是说数组也是一种表。表常用操作:table.concat()table.insert()table.maxn()table.remove()table.sort()原创 2020-08-16 15:16:45 · 107 阅读 · 0 评论 -
迭代器
常见的迭代器如泛型for迭代器:a = {1,2,3}for k,v in ipairs(a) do print(k, v)end其中k是控制变量,ipairs是迭代函数,a是状态常量。原创 2020-08-16 15:08:11 · 185 阅读 · 0 评论