Lua
文章平均质量分 87
萌新求带
Gamer.
展开
-
lua的gc原理
原因:在GC标记阶段结束而清除阶段尚未开始时,如果新建一个对象,由于其未被发现引用关系,原则上应该被标记为白色,于是之后的清除阶段就会按照白色被清除的规则将新建的对象清除。:在初始标记后,垃圾回收器继续遍历灰色对象,将它们标记为黑色,同时将它们引用的白色对象变为灰色。:从根集合(如全局变量、栈、寄存器等)开始,将根集合中的对象标记为黑色,并将其引用的对象标记为灰色。黑色对象及其引用的所有对象都是被标记为活跃对象,不会被垃圾回收。:初始状态下,所有的对象都被假设为白色,表示这些对象是未访问的、未标记的。原创 2023-11-26 18:56:24 · 1061 阅读 · 0 评论 -
Lua如何实现面向对象
众所周知,Lua作为一种很小却很灵活的脚本语言,如今广泛应用于各种网游的热更新。毕竟是解释型语言嘛,不需要提前编译。我们可以把它打成AssetBundle,现场解压运行。但是,相信很多做游戏开发的童鞋,从C#等强类型语言转去写Lua代码的时候,可能都感叹过,Lua真难用!!!找个引用要找半天,还经常打错字段,更重要的是,它不支持面向对象啊!我本来就是单身,你还要剥夺我new对象的权利吗?╥﹏╥不过,随着对Lua的深入♂了解,我发现它还是很迷人的,而且,以上问题前辈们早就有了解决方案。本文就来谈谈原创 2022-03-13 18:25:04 · 2424 阅读 · 0 评论 -
在Lua中访问C#中的属性和方法的特殊情况---有out和ref关键字的情况
当C#的函数中有out和ref参数时,out参数、ref参数会和函数的返回值一起返回,且Lua中调用的时候out参数不需要传入C#中:class Person{ // public string name = "little ai"; //测试out参数public void TestOut(string name, int count){ Console.WriteLine(name)...原创 2020-11-19 17:49:26 · 300 阅读 · 1 评论 -
Lua中string.format占位符的使用
虽然lua中字符串拼接“string.format”相对于“..”消耗较大,但有时为了代码的可读性,项目中还是经常用到“string.format”。至于这两个用法的性能看源码也很容易看出来,这里就简单说一下,前者其实调用C函数str_format来实现拼接的,而后者只是一个操作符,通过memcpy来拼接,并且多个“..”的操作其实也只执行了一次concat。常用占位符%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符%d, %i - 接受一个数字并将其转化为有符号的整数格式%o转载 2020-11-05 14:56:12 · 1318 阅读 · 0 评论 -
Lua math函数库解析
原创 2020-09-10 16:11:47 · 176 阅读 · 0 评论 -
Lua基础
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效。 代码块:一个控制结构、一个函数体、一个chunk(一个文件或文本串)(Lua把chunk当做函数处理) 这样,可以在chunk内部声明局部函数,该函数仅在chunk内可见,并且词法定界保证了包内其他函数可以调用此函数。 在chunk内部定义多个local funct...转载 2020-04-27 13:57:39 · 376 阅读 · 0 评论