![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lua
文章平均质量分 79
类人_猿
游戏开发人员,时不时会分享游戏的一些知识,感谢大家支持!
展开
-
C#字典和列表转LuaTable
【代码】C#字典和列表转LuaTable。原创 2023-12-23 16:38:36 · 764 阅读 · 0 评论 -
LuaTable转C#的列表List和字典Dictionary
之前基本都是从C#中的List或者Dictionary转成luaTable,很少会把LuaTable转成C#的List或者Dictionary,前几天正好做需求的时候要将lua里面的数据转成C#中的集合,C#List或者Dictionary转成luaTable的文章之前写过可以直接参考。lua中的LuaTable、LuaArrayTable、LuaDictTable这几个其实可以跟Unity中List和Dictionary相互转换。原创 2023-12-22 11:04:57 · 1539 阅读 · 0 评论 -
Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
在Lua中和C#中对lua的表进行增删改查是比较常用的表操作,这里主要对比一下lua和C#中分别怎么对表进行增删改查。原创 2023-12-22 11:02:07 · 1225 阅读 · 0 评论 -
ToLua使用原生C#List和Dictionary
当你用ToLua时C#和Lua之间肯定是会互相调用的,那么lua里面使用List和Dictionary肯定是必然的,在C#中可以调用LuaTable、LuaDictTable、LuArrayTable这三种和List、Dictionary进行互相转换和调用,在Lua里面其实也可以将List和Dictionary转换成LuaTable,不转换当然也可以使用。原创 2023-12-22 11:00:44 · 1359 阅读 · 0 评论 -
tolua中table.remove怎么删除表中符合条件的数据
在lua中删除表中符合条件的数据其实很简单,但是有一个顺序问题,因为lua的表中的数据删除需要通过table.remove来删除,当你删除前一个后,索引值发生了变化。原创 2023-12-21 23:46:04 · 702 阅读 · 0 评论 -
Lua中如何使用continue,goto continue(模拟C++ C#的continue)
i < 10;i++)那么lua中其实是没有continue的这个语法,但是lua里面是有goto continue可以执行到某行继续执行,相当于可以指定执行顺序以及执行的语句,在lua中除了这个方法还可以用while去模拟一下continue这个语句下面是这两种方式的具体实现方法。原创 2023-12-21 23:09:57 · 1217 阅读 · 0 评论 -
lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别
这里我用while、for、repeat until分别输出1-20之间的奇数,具体的语法可以看下面的代码while和for就是可以理解成前置条件语句,满足时执行完毕后不在继续执行。repeat until理解为后置语句所以当满足条件时不执行。原创 2023-12-21 23:08:45 · 917 阅读 · 0 评论 -
DLLNotFoundException:xxx tolua... 错误打印
一、DLLNotFoundException介绍首先区分一个问题只要是与DLLNotFoundException相关的必然是丢失了DLL文件,不管是安卓还是Window还是Mac原理都是一样的。二、Plugins文件夹既然是跟DLLNotFoundException相关,必然是与Plugins文件夹相关,原因是因为Plugins文件夹中存放了我们使用插件的兼容dll,只有Plugins文件夹包含了对应平台的.dll或者.so文件才能让我们的插件正常使用。文件目录结构如下:这些是我们常用平台的一些目原创 2020-06-09 15:33:23 · 2427 阅读 · 2 评论 -
Lua 面向对象实现
Lua 面向对象实现目标:实现一个class函数,给lua添加面向对象特征基础:和编译型的面向对象语言不同,在lua中不存在类的定义这样一个概念,不管是类的定义还是类的实例都需要通过lua table来模拟。我们实现的lua面向对象是prototype方式的,即类是一个lua table,这个table 定义了类实例的原型, 类的实例则是基于这个原型的另一个lua table。关键:实...转载 2019-10-31 16:55:31 · 700 阅读 · 1 评论 -
Lua 面向对象
Lua 面向对象面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。以下几种编程语言都支持面向对象编程:C++JavaObjective-CSmalltalkC#Ruby面向对象特征封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中特性。继承:继承的方法允许在不改动原程序的基础上对其进行...转载 2019-10-30 22:36:08 · 238 阅读 · 1 评论 -
Lua 垃圾回收
Lua 垃圾回收Lua采用了自动内存管理。这意味着你不用操心新创建的对象需要的内存如何分配出来,也不用考虑在对象不再被使用后怎样释放它们所占用的内存。Lua运行了一个垃圾收集器来收集所有死对象(即在Lua中不可能在访问到的对象)来完成自动内存管理的工作。Lua中所有用到的内存,如:字符串、表、用户数据、函数、线程、内部结构等,都服从自动管理。Lua实现了一个增量标记-扫描收集器。它使用这两个...转载 2019-10-30 16:54:36 · 310 阅读 · 1 评论 -
Lua 调试(Debug)
Lua 调试(Debug)Lua提供了debug库用于提供创建我们自定义调试器的功能。Lua本身并未有内置的调试器,但很多开发者共享了他们的Lua调试器代码。Lua中debug库包含以下函数:序号方法 & 用途1debug():进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计算一些...转载 2019-10-30 15:53:44 · 464 阅读 · 1 评论 -
Lua 错误处理
Lua 错误处理程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。任何程序语言中,都需要错误处理。错误类型有:语法错误运行错误语法错误语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:-- test.lua 文件...转载 2019-10-30 14:42:29 · 3496 阅读 · 1 评论 -
Lua 文件 I/O
Lua 文件 I/OLua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法简单模式在做一些简单的文件操作时较为合适。但是在进行一些高...转载 2019-10-27 22:08:16 · 426 阅读 · 1 评论 -
ToLua协同程序(coroutine)
ToLua协同程序之前文章转载过一篇Lua的协同程序,在Tolua中其实内部重写了部分lua的协同程序的方法,所以原理基本类似,只是用法改变了。基本语法方法描述coroutine.start(协程函数)协程函数的开启coroutine.step()协程函数的挂起coroutine.wait(延时时间)协程函数的延时 注意:时间的单位是秒cor...原创 2019-10-27 15:15:02 · 1764 阅读 · 1 评论 -
Lua 协同程序(coroutine)
Lua 协同程序(coroutine)什么是协同(coroutine)?Lua协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其他大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。...转载 2019-10-26 17:23:38 · 322 阅读 · 1 评论 -
Lua元素(Metatable)
Lua元素(Metatable)在Lua table中我们可以访问对应的key来得到value值,但是却无法对两个table进行操作。因此Lua提供了元素(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元素我们可以定义Lua如何计算两个table的相加操作a+b。当Lua试图对两个表进行相加时,先检查两者之一是否有元素,之后检查是否有一个叫"__...转载 2019-10-26 16:33:22 · 495 阅读 · 1 评论 -
Lua 模块与包
Lua 模块与包模块类似于一个封装库,从Lua 5.1开始,Lua加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以API接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua的模块是由变量、函数等已知元素组成的table,因此创建一个模块很简单,就是创建一个table,然后把需要导出的常量、函数放入其中,最后返回这个table就行了。以下为创建自定义模块 modul...转载 2019-10-25 15:23:38 · 154 阅读 · 1 评论 -
Lua table(表)
Lua table(表)table 是 Lua 中的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是nil。Lua table 是不固定大小的,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。例如string.fo...转载 2019-10-25 12:56:13 · 207 阅读 · 1 评论 -
Lua中ipairs与pairs的区别
Lua中ipairs与pairs的区别首先我们要知道ipairs和pairs通常用在泛型迭代器与for联动使用。如:for k, v in pairs(t) do print(k, v)endfor k, v in ipairs(t) do print(k, v)end这里for内部的执行过程不详细的说,我之前的文章有讲过《迭代器》官方解释标准库提供了集中迭代...原创 2019-10-24 21:34:45 · 1242 阅读 · 1 评论 -
Lua的闭包深入理解
Lua迭代器这里如果有不明白迭代器的可以去看我之前的文章Lua迭代器这里在提一嘴:无状态迭代器是不保留任何状态的迭代器,这里避免创建闭包花费的额外代价,降低了性能消耗。(典型的就是ipairs)多状态迭代器需要保留多个状态,而不是简单的保留状态常量和控制变量等,最简单的方法就是使用闭包,还有一种方法就是将所有的状态信息封装到table内,将table作为迭代器的状态常量,因为这种情况下可以...转载 2019-10-24 18:48:13 · 1682 阅读 · 1 评论 -
Lua 迭代器
Lua 迭代器迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器容器中的确定的地址。在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。泛型for迭代器泛型for在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。泛型for迭代器提供了集合的key/value对,语法格式如下:for k...转载 2019-10-24 15:50:05 · 345 阅读 · 1 评论 -
Lua数组
Lua数组数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。Lua数组的索引键值可以使用整数表示,数组的大小不是固定的。一维数组一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:array = {"Lua", "Tutorial"}for i= 0, 2 do print(array[i])end以上...转载 2019-10-23 21:41:35 · 201 阅读 · 1 评论 -
Lua字符串
Lua字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。[[和]]间的一串字符。以上三种方式的字符串实例如下:string1 = "Lua"print("\"字符串 1 是\"",string1)string2 = 'runoob.com'print("字符串 2 是"...转载 2019-10-23 18:15:57 · 445 阅读 · 1 评论 -
Lua 运算符
Lua 运算符运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:算数运算符关系运算符逻辑运算符其他运算符算术运算符下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:操作符描述实例+加法A+B输出结果 30-减法A-B输出结果 -10*乘法A*B输出结果...翻译 2019-10-23 15:58:46 · 148 阅读 · 1 评论 -
Lua函数
Lua 函数在lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua提供了许多的内建函数,你可以很方便地在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。Lua函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。函数定义Lua编程语言...转载 2019-10-23 15:38:15 · 279 阅读 · 1 评论 -
Lua 流程控制
Lua 流程控制Lua编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为true时执行指定程序代码,在条件为false时执行其他指定代码。一下是典型的流程控制流程图。控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 数字为条件时 为 true:--[ 0 为 true ]if(0)then pr...转载 2019-10-23 15:10:03 · 124 阅读 · 1 评论 -
Lua循环
Lua 循环很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。Lua 语言提供了以下几种循环处理方式:循环类型描述while循环在条件为...转载 2019-10-23 14:52:10 · 347 阅读 · 1 评论 -
Lua变量
Lua变量变量在使用前,必须在代码中进行声明,即创建变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua变量有三种类型:全局变量、局部变量、表中的域。Lua中的变量全是全局变量,哪怕是语句块或是函数里,除非用local显示声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为nil。-- test.lua 文件脚本a...转载 2019-10-23 14:34:16 · 165 阅读 · 1 评论 -
Lua 数据类型
Lua 数据类型Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。数据类型描述nil这个最简单,只有值nil术语该类,表示一个无效值(在条件表达式中相当于fals...转载 2019-10-23 12:06:23 · 602 阅读 · 1 评论 -
Lua 基本语法
Lua 基本语法Lua 学习起来非常简单,我们可以创建第一个 Lua 程序!第一个 Lua 程序交互式编程Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:$ lua -i $ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio> ...转载 2019-10-22 22:52:28 · 134 阅读 · 1 评论 -
Lua安装环境
Linux 系统上安装Linux&Mac上安装Lua安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用5.3.0版本进行安装:curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gztar zxf lua-5.3.0.tar.gzcd lua-5.3.0make linux testmake installMac OS...转载 2019-10-22 22:09:20 · 310 阅读 · 1 评论 -
lua介绍
一、lua介绍Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。二、Lua 特性轻量级:它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展:lua提供了非常易于使用的扩展接口和机制:...翻译 2019-10-22 22:01:29 · 1112 阅读 · 1 评论