随笔分类 -  Lua相关

1
摘要:在 C#与 Lua 交互中,大量数据共享方案 阅读全文
posted @ 2021-09-29 20:05 天山鸟 阅读(213) 评论(0) 推荐(0)
摘要:ToLua 1,lua正常销毁gameObject ObjectTranslator的数据容器管理GameObject. lua 创建GameObect时,添加到容器里。 销毁时,Delay销毁(解除绑定) 2,C#销毁gameObject,lua的处理 如果C#销毁了GameObject,Lua的 阅读全文
posted @ 2020-10-11 17:34 天山鸟 阅读(1367) 评论(0) 推荐(0)
摘要:整形和浮点型都是数值型(number)的子类型(subtype),这意味着你几乎不需要显式地区分整形和浮点型,整形会自动转换为浮点型;包含整数的浮点数也可以自动转化为整形。2. 在加入整形以前,Lua用double存储number类型。由此产生了一系列问题:1) double只有53个有效位,这让按 阅读全文
posted @ 2020-09-15 21:10 天山鸟 阅读(215) 评论(0) 推荐(0)
摘要:一 C#、Lua数据交互 C#跟Lua如何超高性能传递数据 二 1 善用local。 记录在栈里。 Lua采用了一种类似于寄存器的虚拟机模式。Lua用栈来储存其寄存器。每一个活动的函数,Lua都会其分配一个栈,这个栈用来储存函数里的活动记录 2 string缓存机制。 注意 ..连接,考虑table 阅读全文
posted @ 2020-09-10 10:27 天山鸟 阅读(267) 评论(0) 推荐(0)
摘要:##实现思想 1 用一个“全局”表存class类型 2 定义本类基础的“成员”,如super,构造函数,new函数等等 3 针对本类型的声明,创建成员表(放成员的表-vtbl)且给其设置元表。定义某成员时,如果不存在则存储在成员表。获取某成员时,在成员表找。 (其中,包含__newindex和_in 阅读全文
posted @ 2020-08-12 17:33 天山鸟 阅读(427) 评论(0) 推荐(0)
摘要:##pcall(f[,arg1,..]) 以保护模式调用函数f 第一个返回值是状态码(一个布尔量), 当没有错误时,其为真。 此时,pcall 同样会在状态码后返回所有调用的结果。 ##next (table [, index]) 运行程序来遍历表中的所有域。 第一个参数是要遍历的表,第二个参数是表 阅读全文
posted @ 2020-08-12 15:33 天山鸟 阅读(292) 评论(0) 推荐(0)
摘要:##一、前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏。像《魔兽世界》的插件,手机游戏《大掌门》《神曲》《迷失之地》等都是用Lua来写的逻辑。 所以大部分时候我们不需要去考虑性能问题。Knuth有句名言:“过早优化是万恶之源”。其意思就是过早优化是不必要的,会浪费大量时间 阅读全文
posted @ 2020-08-10 20:23 天山鸟 阅读(444) 评论(0) 推荐(0)
摘要:用好Lua+Unity,让性能飞起来—LuaJIT性能坑详解 luajit官方性能优化指南和注解 阅读全文
posted @ 2020-08-04 16:47 天山鸟 阅读(137) 评论(0) 推荐(0)
摘要:#1 表 typedef struct Table { CommonHeader; //表示这个表中提供了哪些元方法 最开始这个flags 的,也就是 ,当查找一次之后,如果该表中存在某个元方法 lu_byte flags; /* 1<<p means tagmethod(p) is not pre 阅读全文
posted @ 2020-08-02 19:30 天山鸟 阅读(222) 评论(0) 推荐(0)
摘要:#1 工具 ##IDE工具:IDEA+EmmyLua 使用 @ 可以实现代码跳转追踪。 EmmyLua文档 调试 idea和emmyLua有对应版本要求。 idea2018和emmy v1.3.1 ##IDE永久破解 下载解压。 jar包拖到ide界面下一步即可。(jetbrains-agent-l 阅读全文
posted @ 2020-08-01 16:43 天山鸟 阅读(137) 评论(0) 推荐(0)
摘要:##1指令格式 结合上图解读源码: --指令格式里的大小和位置 #define SIZE_C 9 #define SIZE_B 9 #define SIZE_Bx (SIZE_C + SIZE_B) #define SIZE_A 8 #define SIZE_OP 6 #define POS_OP 阅读全文
posted @ 2020-08-01 11:46 天山鸟 阅读(280) 评论(0) 推荐(0)
摘要:##8.1环境 ###含义: 与环境相关的特殊变量一--Global表、env表、registry表以及UpValue 。 Global表存放在lua_State 结构体中也称为G表。每个lua_State 结构体都有一个对应的G表。不用多说,这个表就是存放全局变量的。 env表存放在Closure 阅读全文
posted @ 2020-07-29 11:18 天山鸟 阅读(183) 评论(0) 推荐(0)
摘要:#1 编译lualib、luac.exe、lua.exe ##1.1 lualib.dll生成 1将 lua 源代码文件拷贝进工程, 并加入工程 (添加头文件(.h)与源码(.c)除了 lua.c 以及 luac.c 两个文件) 2 改为C编译 3 编译警告去掉 4 不适用预编译头 5 使用Rele 阅读全文
posted @ 2020-07-23 15:32 天山鸟 阅读(2252) 评论(0) 推荐(0)
摘要:##5.1 Lua执行过程概述 一个语言的虚拟机要做的事情: 编译出字节码 为函数调用准备调用栈 维持一个IP(InstructionPointer指令指针)来保存下一个将要执行的指令地址(对应PC指针-OpCode)。 模拟CPU的运行:循环执行字节码 执行函数 执行Lua文件调用的是luaL_d 阅读全文
posted @ 2020-07-16 11:38 天山鸟 阅读(688) 评论(0) 推荐(0)
摘要:proto类型: Function Prototypes(存放函数原型的数据结构struct ) #抽象语法树 第一步:词法分析,也叫扫描scanner 它读取我们的代码,然后把它们按照预定的规则合并成一个个的标识 tokens。同时,它会移除空白符、注释等。最后,整个代码将被分割进一个 token 阅读全文
posted @ 2020-07-16 11:24 天山鸟 阅读(310) 评论(0) 推荐(0)
摘要:记背约定: StkId是栈元素的索引(比如代表RA(i):寄存器的索引) - typedef TValue StkId; / index to stack elements */ cast类型转换 ##6.1 Lua词法 一般,对一门语言进行解析是两遍遍历的过程 第一遍解析源代码并生成AST ( A 阅读全文
posted @ 2020-07-15 20:27 天山鸟 阅读(616) 评论(0) 推荐(0)
摘要:// 这里需要问一下:upval和一般的对象有什么区别?为什么要单独一个函数来处理? void luaC_linkupval (lua_State *L, UpVal *uv) { global_State *g = G(L); GCObject *o = obj2gco(uv); o->gch.n 阅读全文
posted @ 2020-07-13 11:11 天山鸟 阅读(341) 评论(0) 推荐(0)
摘要:“重写”C#函数的Lua函数要访问C#类对象的没有wrap进Lua环境的私有数据成员、私有方法的时候,目前只能使用静态反射。 关于全Lua开发、全C#开发的问题。全Lua开发可能或多或少,会遇到lua的gc导致的性能问题。而且相对于C#这种强类型语言,Lua对于团队后期维护还是有一定的成本,不做好代 阅读全文
posted @ 2020-06-26 19:27 天山鸟 阅读(211) 评论(0) 推荐(0)
摘要:function func() local index = 0 print("Hello") return function () print(index) index = index + 1 end end local inner = func() print(inner) -- 结果: func 阅读全文
posted @ 2020-06-01 21:14 天山鸟 阅读(118) 评论(0) 推荐(0)
摘要:0 预备知识: 至少对Lua手册C API有简单的了解。lua5.3手册中文 1 Lua虚拟机的栈,如图: 假设虚拟机的栈有n个数据: 解释: 两种解释方式: A,栈顶开始, -1 ...-n B,栈底开始,1 ...n 二、运行原理和调用栈机制实例 创建main.lua 1 function Lu 阅读全文
posted @ 2020-03-13 12:17 天山鸟 阅读(223) 评论(0) 推荐(0)

1