Lua
唐孝辉
QQ:1351105506
微信:xt411526
展开
-
协程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210111133335342.png#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210111135307691.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM...原创 2021-01-11 14:13:50 · 192 阅读 · 0 评论 -
垃圾回收
1.弱引用表原创 2021-01-08 14:55:06 · 112 阅读 · 0 评论 -
环境
function cc(v) print(v)endrequire("OneTest")cc(11)_G["cc"](100)for v in pairs(_G) do print(v)end2.全局变量的声明require("OneTest")cc(11)setmetatable(_G,{__index=function(tab,n) error("this us enpty var") end,__newindex=function(tab,n) error(.原创 2021-01-07 15:15:04 · 140 阅读 · 0 评论 -
面向对象
1.类2.面向对象3.继承原创 2021-01-05 16:04:56 · 83 阅读 · 0 评论 -
元表和元方法
1.元表tableA={"1","2","3","4","5"}tableB={__index = function() return "不存在" end, name="name", }tablec=setmetatable(tableA,tableB)tableD=getmetatable(tableA)print(tableA[9]) --不存在print(tableD.name) --name2.元方法...原创 2021-01-04 16:03:56 · 298 阅读 · 0 评论 -
迭代器和泛型for
function values(t) local i = 0return function () i=i+1 return t[i]endendt={10,20,30}iter=values(t)while true do local val = iter() if not val then break else print(val) endendfor i in values(t) do print(i)end.原创 2020-12-31 16:41:44 · 66 阅读 · 0 评论 -
数据结构
Queue = {} function Queue.newquene() return {count = 0} end function Queue.push(queue, value) queue.count = queue.count+1 queue[queue.count] = value end function Queue.pop(queue) queue[queue.count] ...原创 2020-12-29 10:44:10 · 94 阅读 · 0 评论 -
模式匹配2
function expand(s) return (string.gsub( s,"(%w+)",_G) )endname="lua"statues="great"print(expand("name is statues,is it?"))--lua is great,is it?原创 2020-12-26 16:30:18 · 101 阅读 · 1 评论 -
时间和日期
2.os.datalocal tab=os.date("*t",os.time()) print(tab.year)print(tab.month)print(tab.day)print(tab.yday)print(tab.wday)2020Table.lua:212Table.lua:328Table.lua:4363Table.lua:52print(os.date("%m",os.time())) --123.print(os.date("%Y年%m月%d..原创 2020-12-14 15:36:39 · 146 阅读 · 0 评论 -
模式匹配
01.print(string.find("Hellow world","l",4 )) - 4 4原创 2020-09-01 14:04:40 · 129 阅读 · 0 评论 -
lua.table
在这里插入图片描述function function_name(...) local tab=table.pack(...)for i=1,tab.n do print(tab[i])endendfunction_name(1,5,3,nil,6)原创 2020-09-01 09:52:15 · 95 阅读 · 0 评论 -
09.XLua Lua访问C#中的方法
01.类型信息与泛型方法原创 2020-05-11 17:59:55 · 296 阅读 · 0 评论 -
08.XLua Lua访问C#中的方法
01.操作符重载和函数重载C#中定义的操作符重载和函数重载在Lua中基本上能够使用,不过需要注意的是由于Lua中表示数值的类型只有一种(number),所以C#中对于数值类型之间的重载是不能够正确的识别的,通常只会调用类型符合的重载函数列表中先定义的函数[LuaCallCSharp]public class Overload{ public int Add(int num1, int num2) { Debug.Log("Add-int"); retu原创 2020-05-11 17:06:23 · 634 阅读 · 0 评论 -
07.XLua Lua访问C#中的方法
01.new C#对象原创 2020-05-11 14:19:17 · 337 阅读 · 0 评论 -
Xlua06.C#访问Lua
01.访问一个全局的function仍然是用Get方法,不同的是类型映射。1、映射到delegate这种是建议的方式,性能好很多,而且类型安全。缺点是要生成代码(如果没生成代码会抛InvalidCastException异常)。delegate要怎样声明呢?对于function的每个参数就声明一个输入类型的参数。多返回值要怎么处理?从左往右映射到c#的输出参数,输出参数包括返回值,out参数,ref参数。参数、返回值类型支持哪些呢?都支持,各种复杂类型,out,ref修饰的,甚至可以返回另外一原创 2020-05-11 12:07:06 · 118 阅读 · 0 评论 -
Xlua05.C#访问Lua
访问LuaEnv.Global就可以了,上面有个模版Get方法,可指定返回的类型。luaenv.Global.Get(“a”)luaenv.Global.Get(“b”)luaenv.Global.Get(“c”)创建lua脚本Fourlua.luaa=100;b="哦ID奇偶的";c=false;print(b);创建C#解析using System.Collections;using System.Collections.Generic;using UnityEngine...原创 2020-05-11 11:13:42 · 186 阅读 · 0 评论 -
Xlua04.使用C#调用lua脚本
01.导入插件https://github.com/Tencent/xLua02.C#调用lua最基本是直接用LuaEnv.DoString执行一个字符串,当然,字符串得符合Lua语法using System.Collections;using System.Collections.Generic;using UnityEngine;using XLua; //引入xluapublic class helllow : MonoBehaviour { LuaEnv luaenv; v原创 2020-05-11 10:28:20 · 441 阅读 · 0 评论 -
19.错误(error)
Lua所遇到的任何未预期条件都会引发一个错误。因此在发生错误时不能简单的崩溃或着退出,而是结束当前程序块并返回应用程序。当错误引发时进行恰当的处理是最合适的,然而这个阶段伴随着错误的捕获、错误的处理、错误追溯等处理。Lua中有函数pcall、error、assert函数来操作错误。其中pcall用于捕获错误、error抛出一个错误、assert是error的包装...原创 2020-05-08 14:47:11 · 1222 阅读 · 0 评论 -
19.迭代器和泛型for
function values(t) local i=0; return function() i=i+1; return t[i]; endendt={10,20,30};local iter=values(t);while true do local element=iter(); if element...原创 2020-05-08 10:35:53 · 93 阅读 · 0 评论 -
ulua介绍和使用2
C#创建cube void Start() { CreatCube(); } private void CreatCube() { GameObject item= Resources.Load<GameObject>("cube"); GameObject cube=GameObject.Ins...原创 2019-09-08 08:20:43 · 111 阅读 · 0 评论 -
ulua热更新
/// <summary> /// 如果想删掉框架自带的例子,那这个例子模式必须要 /// 关闭,否则会出现一些错误。 /// </summary> public const bool ExampleMode = false; //例子模式 P...原创 2019-09-08 15:01:21 · 137 阅读 · 0 评论 -
Ulua服务端
namespace SimpleFramework.Service { public HttpServer(int port) { host = "http://192.168.43.205:6688/"; }原创 2019-09-08 15:58:49 · 136 阅读 · 0 评论 -
UluaBUG
原创 2019-09-08 16:29:48 · 58 阅读 · 0 评论 -
uluaC#
原创 2019-09-08 17:18:08 · 97 阅读 · 0 评论 -
07:循环
01:while循环local i=1while i<10 doprint(i)i=i+1end12345678902:数值for循环--for 循环--for var star,end,step do--var从star 变化到end 每次变化一个step(默认为1)--循环体--endfor i=1,10,1 doprint(i)en...原创 2019-07-18 21:44:48 · 82 阅读 · 0 评论 -
ulua介绍和使用
void Start() { LuaState luaState=new LuaState(); luaState.DoString("print(233)"); }lua代码创建物体using LuaInterface;using UnityEngine;using UnityEngine.Experiment...原创 2019-09-07 22:28:43 · 285 阅读 · 0 评论 -
18Lua与C#交互
Lua lua=new Lua(); //创建lua解析器 lua["hh"] = 100; lua["kk"] = "233"; Console.WriteLine(lua["hh"]); Console.WriteLine(lua["kk"]);01:C#调用L...原创 2019-08-27 21:58:36 · 76 阅读 · 0 评论 -
17代码分离
01:当相对路径的时候原创 2019-08-27 19:40:10 · 102 阅读 · 0 评论 -
11迭代器和表
ipairs 按照索引从1开始遍历数组,递增遍历,遇到nil停止pairs 迭代table 遍历表中所有的key和valuesum={"dj","old","22"}for k,v in pairs(sum) doprint(v)endsum[2]=nilfor k,v in ipairs(sum) doprint(v)end01:表的创建 (引用类型)当我们为 t...原创 2019-07-19 22:20:50 · 65 阅读 · 0 评论 -
10数组
01:数组的定义数组的索引可以为负sum={"hha","好好读书","doid"}for i=1, #sum doprint(sum[i])end--hha好好读书doid02:多维数组多维数组即数组中包含数组或一维数组的索引键对应一个数组--二维数组sum={{"11","22"},{"33","44"},{"55","66"}}print(sum[2][2])...原创 2019-07-19 19:35:06 · 115 阅读 · 0 评论 -
09:字符串
01:string.upper(argument)字符串全部转为大写字母02:string.lower(argument):字符串全部转为小写字母。a="SkDfkKd"print(string.upper(a))print(string.lower(a))--SKDFKKD--skdfkkd03:string.gsub(mainString,findString,rep...原创 2019-07-19 17:07:27 · 83 阅读 · 0 评论 -
09:function用法特性
01:函数的定义optional_function_scope function function_name( argument1, argument2, argument3…, argumentn)function_bodyreturn result_params_comma_separatedendoptional_function_scope: 该参数是可选的制定函数是全局函数还是...原创 2019-07-19 13:21:29 · 289 阅读 · 0 评论 -
08流程控制
01:在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。a=10--如果 那么if a thenprint(666)elseprint(233)end多个条件判断a = 300;if( a == 100 ) thenprint(66)elseif a==200 thenprint(888)elseif a==300 thenpri...原创 2019-07-19 11:20:57 · 64 阅读 · 0 评论 -
06:全局变量和局部变量的声明和使用
变量在使用前,必须在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nila =5local b=5fun...原创 2019-07-18 17:50:40 · 1055 阅读 · 0 评论 -
05:function函数的用法
01:在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里:函数是一种数据类型function sum(n)if n==1 then return 1 else return n*sum(n-1) endenda=sum(5)b=aprint(a)print(b)函数做为数据类型传递02:function 可以以匿名...原创 2019-07-18 17:39:13 · 2967 阅读 · 0 评论 -
04Table
01:table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表--创建一个空表local table2={}print(type(table2))--初始化表table2={1,2,5,8,89,8}02:Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以...原创 2019-07-18 11:01:36 · 140 阅读 · 0 评论 -
03Lua中的数据类型
01:nil(空)nil 类型表示一种没有任何有效值,它只有一个值 – nil,例如打印一个没有赋值的变量,便会输出一个 nil 值对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,执行下面x=100b="111"print(x)print(b)x=nilb=nilprint(x)print(b...原创 2019-07-18 10:33:22 · 111 阅读 · 0 评论 -
02Lua中的数据类型
01:Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。...原创 2019-06-28 22:29:04 · 103 阅读 · 0 评论 -
12模块和包
模块类似于一个封装库,把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行了定义myTable.lua文件lunck={}lunck.var="100"lunck....原创 2019-07-19 23:38:55 · 100 阅读 · 0 评论 -
13元表
01:定义在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。setmetatable(table,metatable): 对指定 table 设置元表(metatable),如果元表(metatable)中存在 __metata...原创 2019-07-20 14:38:49 · 91 阅读 · 0 评论