Lua
Ftworld21
专注游戏开发。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++与Lua相互调用
luna库支持c++与Lua相互调用。 1. c++调用Lua cpp_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 · 869 阅读 · 0 评论 -
Lua常用c接口
Lua常用函数说明_和尚的专栏-优快云博客原创 2021-09-27 20:40:01 · 396 阅读 · 0 评论 -
Lua静态链接库
Lua源码可以先编译成静态库 C/C++ 静态链接库(.a) 与 动态链接库(.so) - 52php - 博客园 c/c++静态库和动态库制作 - 简书原创 2021-09-27 20:39:14 · 553 阅读 · 0 评论 -
popen
Lua io.popen() - 简书原创 2021-09-24 16:12:41 · 297 阅读 · 0 评论 -
Lua内存管理
https://blog.youkuaiyun.com/liaoshengg/article/details/81327114原创 2021-08-18 10:29:24 · 691 阅读 · 0 评论 -
lua堆栈操作
https://blog.youkuaiyun.com/lovemysea/article/details/5268255原创 2021-07-19 14:10:07 · 324 阅读 · 0 评论 -
lua的os标准库
https://www.junmajinlong.com/lua/os_lib/原创 2021-06-23 14:36:37 · 232 阅读 · 0 评论 -
匹配模式
https://juejin.cn/post/6874512568913199117 http://lua-users.org/wiki/FrontierPattern https://www.cnblogs.com/zhong-dev/p/4044568.html https://www.coder.work/article/6850306 https://blog.youkuaiyun.com/cfy_yufeng/article/details/83261144 https://blog.csdn.ne原创 2021-05-25 11:03:00 · 1384 阅读 · 0 评论 -
有限状态机
一个lua状态机,随着时间的流逝,执行不同的动作。 136 function test_fsm() 137 138 139 if not test_fsm_state then 140 return 141 end 142 143 if test_fsm_start_time == 0 then 144 test_fsm_start_time = get_cur_time() 145 test_last_check_ti...原创 2021-05-08 17:33:03 · 270 阅读 · 0 评论 -
默认形参
lua没有默认形参这个说法,可以自己实现一下。 https://www.itranslater.com/qa/details/2124742160116352000 https://www.cnblogs.com/Braveliu/p/10737235.html原创 2021-05-07 19:23:35 · 199 阅读 · 0 评论 -
环境_ENV
_ENV可以让代码运行在一个隔离的环境里。 https://blog.codingnow.com/2011/12/lua_52_env.html https://blog.youkuaiyun.com/Ftworld21/article/details/116033771 https://blog.youkuaiyun.com/gulan0/article/details/88696032原创 2021-04-29 17:05:19 · 298 阅读 · 0 评论 -
lua常用函数
1. tonumber 函数原型:tonumber (e [, base]) 默认是按照10进制进行转换成相应的数字。 参考资料: https://www.jianshu.com/p/e51348da59b8 2. gmatch 原型:string.gmatch (s, pattern) 解释:返回一个迭代器函数,每一次调用这个函数,返回一个在字符串s找到的下一个符合pattern描述的子串。如果参数pattern描述的字符串没有找到,迭代函数返回nil。 https://www.ji.原创 2021-04-22 22:00:22 · 2230 阅读 · 0 评论 -
可变参数
参考资料: https://www.cnblogs.com/guomengkai/p/13749218.html https://hypc-pub.github.io/lua-tutorial/chapter05/arguments.html原创 2021-04-16 15:15:18 · 125 阅读 · 0 评论 -
上值
有点类似static变量 参考资料: https://blog.youkuaiyun.com/qq_34018840/article/details/106817365 https://luyuhuang.tech/2020/03/20/lua53-environment.html原创 2021-04-16 11:23:04 · 598 阅读 · 0 评论 -
回调函数
在lua中回调函数也用的比较多,而且比c++的回调函数更加方便,因为不需要定义函数指针。 参考资料: https://blog.youkuaiyun.com/shimazhuge/article/details/41680909原创 2021-04-15 15:46:12 · 160 阅读 · 0 评论 -
lua_gettop
返回堆栈上元素的个数 https://www.jianshu.com/p/c850e687cf33原创 2021-04-02 22:02:17 · 1181 阅读 · 0 评论 -
lua_State
lua_State 中放的是 lua 虚拟机中的环境表、注册表、运行堆栈、虚拟机的上下文等数据。 https://my.oschina.net/xlplbo/blog/314956 https://blog.youkuaiyun.com/chenjiayi_yun/article/details/24304607 http://geekluo.com/contents/2014/04/12/6-lua-state-structure.html ...原创 2021-04-02 21:54:30 · 392 阅读 · 0 评论 -
打印函数调用栈
print(debug.traceback()) https://blog.youkuaiyun.com/fightsyj/article/details/88173996原创 2021-04-02 14:37:31 · 648 阅读 · 0 评论 -
_G表
_G是一张表,保存了lua所用的所有全局函数和全局变量 https://blog.youkuaiyun.com/whereismatrix/article/details/79704421 https://blog.youkuaiyun.com/HQ354974212/article/details/89459958原创 2021-04-02 10:16:32 · 171 阅读 · 0 评论 -
异常处理
pcall与xpcall,用于捕获异常并且继续执行程序 https://qinguan.github.io/2018/04/14/lua-pcall-and-xpcall/原创 2021-04-01 15:26:30 · 189 阅读 · 0 评论 -
rawset和rawget
参考资料: https://blog.youkuaiyun.com/haobaworenle/article/details/70262047原创 2021-03-31 16:31:55 · 202 阅读 · 0 评论 -
表的拷贝
表的赋值相当于引用,拷贝的话需要其他的实现方式 参考资料: http://lua-users.org/wiki/CopyTable原创 2021-03-31 11:02:26 · 155 阅读 · 0 评论 -
import和require
https://zhidao.baidu.com/question/2079846555350459028.html https://www.taodudu.cc/news/show-3037298.html原创 2021-03-26 11:58:04 · 222 阅读 · 0 评论 -
a[i]与a.i
a={i=2,3} i = 1 print(a.i) print(a[i]) 分别打印2,3, a.i是访问a中的i,相当于结构体中访问一个元素,而a[i]是访问数组中下标为i的元素 参考资料: https://blog.youkuaiyun.com/wujie_03/article/details/71171489原创 2021-03-05 23:36:16 · 1853 阅读 · 0 评论 -
数据结构
一.数组 二.链表 一个简单的链表可以如下实现: list = nil list = { next = list, value = 5} list = { next = list, value = 4} list = { next = list, value = 3} while list do --遍历链表 print(list.value) list = list.next end ...原创 2021-03-03 23:02:34 · 167 阅读 · 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/679617 https:/...原创 2021-02-24 16:11:27 · 846 阅读 · 0 评论 -
深入理解Lua协程的实现
协程是lua中一大利器,使用coroutine.create创建协程,使用coroutine.resume调用协程中的实例,使用coroutine.yield可以挂起一个协程,需要的时候再使用coroutine.resume恢复,并且可以从停止的地方开始执行。resume和yield的配合强大之处在于,resume处于主程中,它将外部状态(数据)传入到协同程序内部;而yield则将内部的状态(数据)返回到主程中。 ...原创 2021-02-23 12:01:49 · 590 阅读 · 0 评论 -
点,冒号与self
-- 点号定义和点号调用: 有点类似数据索引的访问方式 girl = {money = 200} function girl.goToMarket(girl ,someMoney) girl.money = girl.money - someMoney end girl.goToMarket(girl ,100) print(girl.money) -- 参数self指向调用者自身(类似于c++里的this 指向当前类) girl = {money = 200} functio...原创 2021-02-20 14:32:32 · 207 阅读 · 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 · 247 阅读 · 0 评论 -
枚举
lua中并没有自带枚举类型,需要自己实现: https://www.cnblogs.com/vsirWaiter/p/8183941.html http://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 · 221 阅读 · 0 评论 -
lua练习题
https://blog.youkuaiyun.com/XIANG__jiangsu/article/details/78262439 https://blog.youkuaiyun.com/earbao/article/details/51767543 https://blog.youkuaiyun.com/ywjun0919/article/details/50603148 https://www.cnblogs.com/carekee/articles/1745202.html https://blog.youkuaiyun.com/hun原创 2021-02-19 11:05:41 · 591 阅读 · 0 评论 -
连接数据库
使用LuaSQL连接mysql数据库步骤: 1.luasql.mysql 2.connect 3.execute 4.fetch原创 2020-08-19 23:39:09 · 137 阅读 · 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 o e...原创 2020-08-19 23:33:20 · 144 阅读 · 0 评论 -
垃圾回收
lua采用垃圾自动回收的方式对访问不到的死对象进行收集。它实现了一个增量标记-扫描收集器。 提供了collectgarbage函数完成对垃圾的收集。原创 2020-08-19 09:16:33 · 125 阅读 · 0 评论 -
错误处理,pcall,xcall
错误处理包括: 语法错误 运行错误 语法错误比较容易定位,但是运行错误需要一些额外的工具来辅助定位: assert() error() pcall xcall debug原创 2020-08-19 09:04:51 · 354 阅读 · 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 · 182 阅读 · 0 评论 -
元表
元表是一种用来定义对table或者userdata操作方式的表。有点c++中重载的味道。 对指定table设置元表(metatable): mytable={} mymetatable={} setmetatable(table,metatable) 以上代码可以直接写为mytable=setmetatable({},{}) 获取元表: getmetatable(mytable) __index元方法:用来对表访问 __newindex元方法:用来对表更新 __call元方法..原创 2020-08-17 09:16:30 · 610 阅读 · 0 评论 -
模块与包
一个.lua文件可以封装为一个模块以供其他模块调用,一般来说文件名要与模块名类似,然后使用require引用模块,例如: test_module.lua: test_module={} test_module.num = "2" function test_module.fun1() io.write("公有函蔲fun1\n"); end local function func2() print("私有函数fun2\n") end function test_module.fun...原创 2020-08-16 15:27:42 · 162 阅读 · 0 评论 -
Lua表的简介
表可以用来创建不同的数据类型,比如数组和字典,也就是说数组也是一种表。 表常用操作: table.concat() table.insert() table.maxn() table.remove() table.sort()原创 2020-08-16 15:16:45 · 175 阅读 · 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 · 304 阅读 · 0 评论
分享