阿成_
有问题可留言
一笑而过-阿成
QQ技术交流群:111074552
展开
-
lua # 获取table数组长度
如果数组最后的元素为 nil,那么不会算在长度内程序运行后,输出:3如果数组的最后的元素为 nil,不管几个,这些 nil 都不会被计算在数组的长度之内。原创 2023-11-03 22:08:55 · 1057 阅读 · 0 评论 -
XLua中lua读写cs对象的原理
从A环境传递一个对象a到B环境,会先在A环境的全局存储这个对象并建立一个a_id,保证这个对象不被GC,把a_id传递到B环境并构建一个包装对象a_wrapper,包含a_id,这样a_wrapper可以通过a_id访问到a。解决方案是lua对象释放的时候,手动调用一下c#对象的释放,把较大的内存释放掉,比如RawFileAsset对象中的byte数组data,lua释放这个对象时,手动把data置null,这样data就可以及时被GC,不用等lua gc。position并不是一个变量,而是一个属性。原创 2023-10-27 19:32:15 · 1170 阅读 · 0 评论 -
深入xLua实现原理之Lua如何调用C#
是腾讯的一个开源项目,为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力。本文主要是探讨xLua下Lua调用C#的实现原理。转载 2023-10-27 19:22:47 · 857 阅读 · 0 评论 -
深入xLua实现原理之C#如何调用Lua
本文主要是探讨xLua下C#调用Lua的实现原理,有关Lua如何调用C#的介绍可以查看。转载 2023-10-27 19:20:44 · 396 阅读 · 0 评论 -
深入理解xLua基于IL代码注入的热更新原理
以修复TestXLua.Add函数为例来描述一下整个热更过程先通过Generate Code为TestXLua.Add生成与其声明相同的匹配函数"__Gen_Delegate_Imp1",这个匹配函数是被生成在DelegateBridge类中的。有了这个匹配函数,Lua函数就可以被传递到C#中。然后通过IL代码注入,为TestXLua添加一个名为"__Hotfix0_Add"的DelegateBridge类型的静态变量。转载 2023-10-27 19:17:57 · 333 阅读 · 0 评论 -
对Lua中Userdata的理解
目录一、概述二、源码实现相关函数实现1,lua_pushlightuserdata2,lua_newuserdata3,luaC_newobj(lgc.c)4,createstrobj(lstring.c)三、总结一、概述Lua中userdata分两类: 1,是轻量级userdata(light userdata),轻量级userdata是一种表示C指针的值,对Lua虚拟机来说,这种数据类型不需要GC(垃圾回收),其指向的内存由用...原创 2021-03-16 17:20:18 · 10875 阅读 · 0 评论 -
对Lua中 table.concat()的理解
目录基本解释创建代码运行结果总结 在使用 Lua 的过程中,当遇到需要连接大量字符串的时候,尽量不要使用字符串连接符 .. 进行连接,因为 Lua 中的字符串是不可变的,每进行一次连接就会复制生成一个新的字符串,随着字符串的长度越来越长,复制操作也会越来越耗时!这种情况采用 table.concat 进行连接效率会高很多!基本解释原型:table.concat (table [, sep [, i [, j]]]) 解释:返回表中的特定项连接后的数据,要求所连...原创 2021-03-15 17:25:21 · 5325 阅读 · 0 评论 -
lua中的弱表理解
lua中弱表的理解转载 2021-03-04 21:20:27 · 1206 阅读 · 1 评论