tolua使用的一些心得

1.     关于模拟枚举:

 

(1)首先设置起始的枚举值为LManagerID.LUIManager +1

(2)然后在表中添加枚举,注意要填写两次,一次是字符串一次是变量。

(3)调用ResetTableKeyValue函数,这里传的参数分别为起始值与枚举表。

(4)该方法的具体实现就是通过循环,里面的tmpTable[i]返回的是字符串,而外面的tmpTable[字符串]就表示把这个变量的值变成了beginValue+1。也就是对应枚举+1。这样后面就可以通过点来访问这个枚举值了。访问到的也就是具体的数字了。

 

2.     关于模拟面向对象:也就是模拟封装/继承与多态

 

这里使用new()函数作为构造函数。当调用这个函数时,就相当于建了一个子类,然后把父类设置成元表,最后返回了子类。(当你希望这个类被继承时,请写上该构造)

 

在使用的时候,先调用父类的构造函数。

然后设置this(可以不设置,就是为了用起来方便)。

然后使用元方法__index。只有设置了元方法才算是继承了父类。这个元方法的意思是如果在这个LRegisting表里没找到,那就去LRegisting的元表里去找。

 

3.     模拟协程:

coroutine.step(帧数,句柄,为等待结束继续执行时所需要的参数) 后两个参数可以没有

coroutine.yield() 挂起协程

step可以设定帧数。yield直接挂起协程,只有coroutine.resume() 可以重启协程

例子:这里要注意了,一定要用点来写方法。如果用冒号会自动调用!

 

 

4.     如何调用一些lua里没有的类的方法:

(1)     在项目中查找CustomSetting.cs文件,进入找到一个函数

 

(2)     把你要使用的类注册到这里

 

(3)     清空并重新generatorAll一下生成warp文件。

(4)     在lua中进行调用new()构造函数,或是addcomponent添加组件以获取实例!

 

在tolua-lua-unityEngine文件夹下已经封装好了一些unity中常用的值类型,可以不用包装就拿来使用。同样可以自定义一些功能类进行包装后在lua内使用。

 

5.     关于一些方法的使用:(待补充)

(1)GetComponent方法,传入的是string类型的参数。

 

(2)表的遍历:

 

(3)表的注意事项:

        在使用任何表内数据的时候都要table.data进行调用,否则就是比对字符串,要加上双引号””  如下面的id就要加上引号,因为前面没有加表名!

 

表在声明的同时赋值只能声明一层空间。如

        Table={}

        Table[”1”][“2”]=2  会报错。

 

        Table={{},{}}

        Table[”1”][“2”]=2   编译通过并能正常赋值。

 

 

commonfuc  里面存放了lua方法的API。

通过generateAll把对应C#文件生成为wrap文件前,需要在CustomSetting里进行注册

 

(4)在lua里怎么去掉字符串的括号:

使用gsub函数,三个参数分别是:要编辑的字符串,被替换的字符,替换后的字符

其中括号要用中括号括上才能去掉,不然去不掉。(不能使用[(Clone)]会乱码)

 

(5)在lua中使用二维数组:

 

(6)生成随机数:math.random(x,y)  math.abs求绝对值

(7)可变参数:Lua将函数的参数放在一个叫arg的表中

(8)#操作符,用来获取表中最大的键值,只对连续键值有效

       

 

posted @ 2017-08-08 22:28  萌新小L  阅读(3525)  评论(0编辑  收藏  举报