lua
丿寒风
网易游戏3年,游戏创业4年,3D设计软件架构师4年...
展开
-
skynet socket监听连接 demo
下载安装源码: https://github.com/cloudwu/skynet编译:https://github.com/cloudwu/skynet/wiki/Build服务器 demo新建 server 目录,将 skynet 原来克隆在 server 目录中;为了后面维护和更新方便,在 skynet 目录同级新建 game 目录 和 log 目录;在 game 目录中新建3个文件,c原创 2017-12-20 15:33:40 · 2140 阅读 · 0 评论 -
Lua学习笔记6:C++和Lua的相互调用
新建cocos2dx-lua项目,打开class可以发现,其实就是C++项目,不过为什么只有一个Appdelegate类呢?其实其他代码都写在lua里面了,在C++中调用就可以了,先来看看C++是如何调用Lua脚本的。Lua版:5.2.3系统:Linux 一 C++ 调用Lua1 目录结构 先看下我的目录结构吧,生成lua库,不会生成Lua库,可原创 2014-07-18 19:51:12 · 1534 阅读 · 1 评论 -
Lua学习笔记9:执行多Lua文件
一 终端中执行多个文件:-l例:在文件file1中定义了一个变量num,在文件file2中打印这变量,代码如下:--file1.luanum = 100--file2.luaprint(num)终端输入(注意:不是lua命令行):lua -lfile1 -lfile2注意:不要加上文件后缀名.lua二 命令行中加载文件--lib.lua原创 2014-08-20 00:26:23 · 3945 阅读 · 0 评论 -
lua学习笔记10:lua简单命令行
前面多次用了命令行,这次就看下Lua的命令行:一 格式lua [options][script][args]二 具体命令-e 直接将命令传个lua-l 加载一个文件-i 进入交互模式例如,终端输入:lua -e "print(math.sin(12))"原创 2014-08-20 00:38:17 · 4342 阅读 · 0 评论 -
lua学习笔记12:pairs和ipairs
在lua中,pairs和iparis都可以用于遍历数字,他们也是有区别的,而且区别还挺大,看下面几个例子:local tabFiles = {[3] = "test2",[6] = "test3",[4] = "test1"} for k, v in ipairs(tabFiles) doprint(k, v)endipairs(tabFiles)遍历时,当key=1时候v原创 2014-08-28 12:26:00 · 1469 阅读 · 0 评论 -
lua学习笔记13:协程详解和举例
一、coroutine.create创建协程参数是协程的主函数,返回一个thread对象co = coroutine.create(function() print("coroutine execute!")end)二、协程状态协程有三种状态:挂起(suspended)、运行(running)和死亡(dead)coroutine.status(co)返回协程当前的状态原创 2014-10-08 16:10:40 · 2534 阅读 · 1 评论 -
Lua热更新原理及示例
网上有不少Lua热更新的文章,都只说了理论,被没有给出实际可操作的代码,下面是我写的几个例子。热更新原理Lua的 require(modelname) 把一个lua文件加载存放到package.loaded[modelname]。 当我们加载一个模块的时候,会先判断是否在package.loaded中已存在,若存在则返回改模块,不存在才会加载(loadfile),防止重复加载。 package原创 2016-09-08 17:30:34 · 44168 阅读 · 1 评论 -
lua学习笔记16:table元表详解
一 table本质Lua中table本质实际上是个类似HashMap东西。其元素是很多的Key-Value对,类似iOS中的字典NSDictionary。如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制。lua“面向对象”就是凭借这个机制实现的。示例:local tab = {}print(tab.key)输出:nil因为tab中没有任原创 2015-02-07 20:17:43 · 4028 阅读 · 0 评论 -
lua命令行参数
lua命令行参数lua [options] [script [args]]首先,script 脚本名,options 可选参数:-e:直接将命令传入Lua代码-l:加载一个文件-i:进入交互模式args 传给脚本的参数在运行以前,Lua使用所有参数构造arg表。 脚本名索引为0,脚本的参数从1开始增加。 脚本前面的参数从-1开始减少。例如: lua -e “print(‘helloworl原创 2017-03-10 13:43:35 · 13026 阅读 · 0 评论 -
lua的垃圾回收机制
垃圾回收的目的是要释放掉不再被使用变量所占用的内存。Lua的垃圾收集机制使用了名为标志和清扫(Mark-and-Sweep)的方式。默认情况下,所有变量都标记为“可回收”,回收是从根节点_G出发,可达的对象标记为“不可回收”,然后回收没有被标记为“不可回收”的变量。一 回收机制基础的Mark-and-Sweep算法是最古老的解决循环引用情况垃圾收集算法之一。顾名思义,这原创 2015-03-31 10:53:55 · 6808 阅读 · 1 评论 -
Lua学习笔记5:类及继承的实现
-- Lua中类的实现-------------------------------- 基类 ----------------------------classBase = {x = 0,y = 0} -- x,y为类的成员变量classBase.__index = classBase -- 这句是重定义元表的索引,必须要有--模拟构造体,一般名称为new()f原创 2014-07-11 23:12:53 · 1394 阅读 · 0 评论 -
Lua学习笔记2:变量
1 注释单行注释:多行注释:原创 2014-07-03 17:34:32 · 918 阅读 · 0 评论 -
lua正则表达式
lua中的正则表达式,规则如图:常用示例,代码如下:-- 去掉首尾所有空格function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1"))endlocal s = " space "local txt = trim(s)print(string.len(s), string.len(txt))原创 2015-04-07 16:12:13 · 3432 阅读 · 0 评论 -
Lua学习笔记3:函数
函数定义形如:function原创 2014-07-03 17:49:32 · 794 阅读 · 0 评论 -
Lua学习笔记1:开发环境搭建(windows和linux)
1 下载安装“Lua For Windows”地址:2 安装 3 打开原创 2014-07-03 16:58:36 · 1692 阅读 · 0 评论 -
Lua学习笔记7:时间和日期
lua中的时间类似于C语言中的时间,如下:local time = os.time()print(time)local t = os.date("*t")for k,v in pairs(t) do print(k,v)end这样就可以分别输出年、月、日、时、分、秒,输出如下:1407406553hour 18min 15wday 5day 7mo原创 2014-08-07 18:24:28 · 1762 阅读 · 0 评论 -
Lua学习笔记8:文件读写
lua中文件读写经常在游戏配置中用到,比如客户端的音效音乐开关等。Lua官方API文档:点这里I/O库为文件操作提供4个主要函数:io.open(),io.read(),io.write和io.close()。io.open(文件路径,打开方式):以指定方式打开一个文件,打开成功返回一个文件句柄,失败返回nil和错误描述。可以传入以下六种打开方式:原创 2014-08-09 10:17:08 · 3402 阅读 · 0 评论 -
lua学习笔记14:字符串分割
在处理http请求返回的数据时,经常会用到字符串分割。lua号称“脚本精灵”,是一门小而精的语言,它并没有给我们实现字符串的分割。拒绝前戏,直接高潮,上代码:------------------------------------------------------------------------- des:字符串分割-- arg:str-要被分割的字符串 ,char-分割字符原创 2014-11-13 16:03:39 · 1717 阅读 · 0 评论 -
lua学习笔记14:函数多返回值
Lua中函数可以返回多个值,为了说明不同情况下,返回值的个数,我们先声明如下几个函数:-- 无返回值function fun0() end-- 一个返回值function fun1() return 1end-- 二个返回值function fun2() return 1, 2end-- 三个及多个返回值function fun3() return 1原创 2015-01-12 12:10:00 · 7429 阅读 · 0 评论 -
lua学习笔记13:查找并替换文件中关键字
谢了一个小工具,拿出分享分享。先说一下背景吧。项目中为了重复利用图片资源,把json和图片都放在Resource/ui目录,但有一些图片,比如说道具,是在Resource/images/item下面,所以,在CocosStudio中编辑完UI之后,需要把资源的相对路径改到item目录,因此就写了这个脚本。-----------------------------------原创 2014-12-26 17:35:53 · 4906 阅读 · 0 评论 -
lua学习笔记15:table数组逆序
数组的逆序,只能用于数组,不能用于哈希表function reverseTable(tab) local tmp = {} for i = 1, #tab do local key = #tab tmp[i] = table.remove(tab) end return tmpend// 示例local t = {"one", "two", "three"}原创 2015-02-04 21:08:24 · 11894 阅读 · 0 评论 -
lua学习笔记11:lua中的小技巧
lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作一、 巧用or x = x or v等价于:if not x then x = vend如果x为nil或false,就给他赋值为二、三元运算符实现a and b or c类似C语言:a ? b : cand 的运算由优先级高于or原创 2014-08-20 00:49:05 · 2061 阅读 · 0 评论 -
Lua学习笔记4:控制流程
1 for循环for 变量 = 参数1, 参数2, 参数3 do循环体end原创 2014-07-03 18:04:43 · 797 阅读 · 0 评论