
Lua游戏脚本开发
Lua脚本开发基础知识
jadeshu
这个作者很懒,什么都没留下…
展开
-
<1>lua编译环境 数据类型和局部变量
1.编译环境http://www.lua.org/download.html 下载解压后bin目录中lua.exe运行 luac.exe编译成lua字节码2.基本数据类型 整数,小数,布尔值(true false)3.局部变量 local4.复杂数据类型 字符串 表 函数对象--------字符串 字符串对象就是指向一串文字,它也是一种复杂数据对象--------表-----...原创 2018-04-06 19:35:28 · 636 阅读 · 0 评论 -
<2>运算符和语句
1.基本表达式1: =, +, -, *, /, 赋值,加减剩除; lua没有c/c++的缩写表达式+= -= *=, ++, --;2: () 改变运算的优先级;3: 字符串对象加法..; “Hello”..”world”local str = "abc"str = str .. 7print(str) --abc7str = str .. " asd"print(str) ...原创 2018-04-06 21:22:57 · 382 阅读 · 0 评论 -
<3>Lua函数
Lua 函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用; 2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。函数定义Lua 编程语言函数定义格式如下:optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) function_body return result_params_comma_separateden原创 2020-09-08 22:50:21 · 332 阅读 · 0 评论 -
<4>lua字符串
1.字符串<1>字符串相连/加法 ..local str = "abc"str = str .. 7--字符串与数字相连print(str) --abc7str = str .. " asd"--字符串与字符串相连print(str) --abc7 asdstr = str .. "123"print(str) --abc7 asd123<2>数字...原创 2018-04-06 21:44:04 · 296 阅读 · 0 评论 -
<5>Lua表
lua表1:lua没有数组,但是表可以代替数组的功能(数组部分与非数组部分); a.Lua表的数组部分的索引是从1开始的, 1, 2, 3 ...称连续的索引; b.Lua表的连续索引的长度(数组部分); #表的名字;--数组部分 索引从1开始(lua特色)local list_array = {20,10,30,5,6}--20 10 30 5 6print(list_...原创 2018-04-06 21:44:55 · 550 阅读 · 0 评论 -
<6>Lua require模块与包
1.多返回值--1: 一个lua函数可以返回多个返回值:--2: 定义多个变量来接受多返回值--3: lua的unpack函数,解开表里的单个的值;结果2.require模块--1: 第一个代码是有lua虚拟机第一个解释执行的lua文件;--2:第一个lua文件可以去包含和导入其他的lua文件; 使用require关键字来导入其他lua--3: require的时候就会装载lua文件,并执行...原创 2018-04-06 23:11:01 · 2139 阅读 · 0 评论 -
<7>Lua元表和冒号 self
Lua中没有像C、C++、JAVA中的类概念,面向对象等 ,但我们可以模拟出来1. Lua中有个很重要的概念元表 设置元表setmetatable()函数 获取元表getmetatable()函数 例子如下:元表中有个很重要的Key __index代码:local Person = { __index = { name = "jadeshu", age = 28...原创 2018-04-08 00:19:01 · 693 阅读 · 0 评论 -
<8>Lua类的表的实例创建
根据上一节知识所述Lua中没有像C、C++、JAVA中的类概念,面向对象等 ,但我们可以模拟出来如下代码如下:--创建类的表local Person = {}function Person:setName() print("Person:setName()")end--.....--new实例函数function Person:new(instance) if not insta...原创 2018-04-08 00:20:44 · 1215 阅读 · 0 评论 -
<9>Lua继承
模拟继承方式代码:--继承-- 基类:Personlocal Person = {} --基类的表-- 方法function Person:test() print("Person:test()",self)endfunction Person:new(instance) if not instance then instance = {} end ...原创 2018-04-08 00:43:34 · 284 阅读 · 0 评论 -
<10>Lua C/C++互相调用
先来说下大致脚本引擎框架,此次采用如下,即运行C++代码启动程序,然后加载Lua脚本执行!1.基础 Lua脚本中只能调用 int (*lua_CFunction) (lua_State *L) 这种类型的C/C++函数; 所有的C/C++函数如果要给Lua进行调用,只能用这样的函数来封装; 那么在C/C++中怎么获得Lua传递过来的参数? 通过操作Lua...原创 2019-03-06 00:28:32 · 4644 阅读 · 0 评论 -
<11>Lua 常用函数 一
lua_getallocflua_Alloc lua_getallocf (lua_State *L, void **ud);返回给定状态机的内存分配器函数。如果 ud 不是 NULL ,Lua 把调用lua_newstate 时传入的那个指针放入*ud 。lua_getfenvvoid lua_getfenv (lua_State *L, int index);把索引处值的环境表压入堆...转载 2019-03-06 00:42:07 · 8017 阅读 · 0 评论 -
<12>Lua文件IO
Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简单模式就显得力不从心。例如同时读取多个文件这样的操作,使用完全模式则较为合适。打开文件操作语句如下:f转载 2020-09-08 23:21:13 · 266 阅读 · 0 评论 -
<13>Lua 协程coroutine
什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起。协同程序有点类似同步的多线程,在转载 2020-09-08 23:26:20 · 444 阅读 · 0 评论 -
<12>Lua chunk文件结构
1.lua执行经过: xx.lua源码文件-------》执行(lua虚拟机) 隐式调用luac编译器我们可以直接用luac命令去编译lua源码文件,然后用编译后的文件运行在lvm(lua虚拟机),具体过程如下: ...原创 2019-10-18 00:46:14 · 803 阅读 · 0 评论