
Lua
yang854426171
这个作者很懒,什么都没留下…
展开
-
Lua元表——普通表(__index,__newindex,__call,__add,__tostring,.....等等)
一 关键字 __index(当调用原表中不存在的索引的时候,会调用__index对应的方法或者元表)--元表 metatablemyTabel={'Lua','Java','C#','C++'}--普通表mymetatable={ __index=function (tab,key)--元表对应的普通表,key访问的索引 --当普通表的索引不存在的时...原创 2019-04-13 16:54:05 · 884 阅读 · 0 评论 -
XLua Lua访问C#中的方法(四)访问枚举
在Lua中有以下五种方法可以访问到枚举变量:当作普通的静态属性访问使用__CastFrom函数,从枚举值对应的数值做类型转换使用__CastFrom函数,从枚举值对应的字符串做类型转换直接传入枚举值对应的数值直接传入枚举值对应的字符串官方文档上只提到了前三种方法,并且方法2和方法3需要生成代码才能使用,不过经过实验发现,不生成代码时上述五种方法都能够使用using System.C...原创 2019-04-14 16:28:46 · 6806 阅读 · 0 评论 -
XLua Lua访问C#中的方法(四)可变参数与默认参数
定义SpecialParam类,包含一个有默认参数的函数和一个有可变参数的函数在Lua中调用它们的时候,参数的规则与C#中相同using UnityEngine;using XLua;[LuaCallCSharp]public class SpecialParam{ public void DefaultParam(int arg0, string arg1 = "...原创 2019-04-14 16:14:17 · 2161 阅读 · 0 评论 -
XLua Lua访问C#中的方法(三)操作符重载和函数重载
操作符重载和函数重载C#中定义的操作符重载和函数重载在Lua中基本上能够使用,不过需要注意的是由于Lua中表示数值的类型只有一种(number),所以C#中对于数值类型之间的重载是不能够正确的识别的,通常只会调用类型符合的重载函数列表中先定义的函数假设有下面两个C#类,在Vector类中重载了操作符"+",在Overload类中对函数Add进行了重载,类型分别是int,float和string...原创 2019-04-14 16:05:11 · 1680 阅读 · 0 评论 -
XLua Lua访问C#中的方法(二)访问多个参数输入,多个返回值的方法
访问C#复杂函数对于参数,Lua会从左到右取C#函数中的普通参数或者ref参数依次作为自己的参数对于返回值,Lua会从左到右取C#函数中的返回值、ref参数或者out参数依次作为自己的返回值例如,对于下面的函数ComplexFunctionusing UnityEngine;using XLua;[LuaCallCSharp]public class ComplexClass...原创 2019-04-14 15:34:28 · 1795 阅读 · 0 评论 -
XLua Lua访问C#中的方法(一)普通访问
using System;using System.IO;using System.Text;using UnityEngine;using XLua;public class HelloWorld01 : MonoBehaviour{ private LuaEnv luaEnv; void Start() { luaEnv = new L...原创 2019-04-14 15:07:19 · 2448 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的function 《二》映射到LuaFunction来访问
2、映射到LuaFunction 这种方式的优缺点刚好和第一种相反。使用也简单,LuaFunction上有个变参的Call函数,可以传任意类型,任意个数的参数,返回值是object的数组,对应于lua的多返回值。四、使用建议1、访问lua全局数据,特别是table以及function,代价比较大,建议尽量少做,比如在初始化时把要调用的lua function获取一次(映射到delegate...原创 2019-04-14 11:30:39 · 454 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的function 《一》同过映射到delegate访问Lua方法
官方文档:三、访问一个全局的function 仍然是用Get方法,不同的是类型映射。 1、映射到delegate这种是建议的方式,性能好很多,而且类型安全。缺点是要生成代码(如果没生成代码会抛InvalidCastException异常)。delegate要怎样声明呢? 对于function的每个参数就声明一个输入类型的参数。多返回值要怎么处理?从左往右映射到c#的输出参数,输出参数包括...原创 2019-04-14 11:19:35 · 1177 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的table《四》映射到LuaTable类
XLua文档4: 4、另外一种by ref方式:映射到LuaTable类这种方式好处是不需要生成代码,但也有一些问题,比如慢,比方式2要慢一个数量级,比如没有类型检查。 private LuaEnv luaEnv; void Start() { luaEnv = new LuaEnv();//全局唯一 luaEnv.AddLoader...原创 2019-04-14 10:33:56 · 1473 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的table《三》Dictionary和List映射
XLua文档第三条: 3、更轻量级的by value方式:映射到Dictionary<>,List<> 不想定义class或者interface的话,可以考虑用这个,前提table下key和value的类型都是一致的。> Dictionary映射 private LuaEnv luaEnv; vo...原创 2019-04-14 10:21:37 · 956 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的table《二》interface映射
Xlua文档:2、映射到一个interface这种方式依赖于生成代码(如果没生成代码会抛InvalidCastException异常),代码生成器会生成这个interface的实例,如果get一个属性,生成代码会get对应的table字段,如果set属性也会设置对应的字段。甚至可以通过interface的方法访问lua的函数。 private LuaEnv luaEnv; ...原创 2019-04-13 21:21:46 · 811 阅读 · 0 评论 -
XLua C#访问Lua文件中一个全局的table《一》
方法一1、映射到普通class或struct定义一个class,有对应于table的字段的public属性,而且有无参数构造函数即可这种方式下xLua会帮你new一个实例,并把对应的字段赋值过去。table的属性可以多于或者少于class的属性。可以嵌套其它复杂类型。要注意的是,这个过程是值拷贝,如果class比较复杂代价会比较大。而且修改class的字段值不会...转载 2019-04-13 20:47:26 · 530 阅读 · 0 评论 -
XLua C#访问Lua文件中的全局变量
using System.IO;using System.Net;using System.Text;using UnityEngine;using XLua;public class HelloWorld01 : MonoBehaviour{ private LuaEnv luaEnv; void Start() { luaEnv = n...原创 2019-04-13 20:35:31 · 727 阅读 · 0 评论 -
Lua gc
引用自 http://www.runoob.com/lua/lua-garbage-collection.htmlLua 提供了以下函数collectgarbage ([opt [, arg]])用来控制自动内存管理:collectgarbage("collect"): 做一次完整的垃圾收集循环。通过参数 opt 它提供了一组不同的功能:collectgarbage("count"): ...转载 2019-04-13 18:15:27 · 780 阅读 · 0 评论 -
Lua coroutine(协同程序)
**定义和启动**--Lua里面的协同程序(coroutine)--暂定函数,可以挂起,可以一步一步的执行,可以暂停--第一种定义,启动--1、定义协同程序(coroutine.create)co=coroutine.create( function (a,b) print(a+b) end)--2、启动协程(coroutine.resume)...原创 2019-04-13 18:02:27 · 241 阅读 · 0 评论 -
XLua Lua访问C#中的方法(四)访问委托、事件
委托在使用Lua代码访问C#委托时需要注意,访问委托类型的方式与访问静态变量的方式相同,访问(静态/非静态)委托的变量的方式与访问(静态/非静态)成员变量的方式相同由于在Lua中没有"+=“和”-=“操作符,在增加委托链的时候只能使用”+“和”-"操作符using UnityEngine;using XLua;[LuaCallCSharp]public class Delegat...原创 2019-04-14 17:08:31 · 10517 阅读 · 0 评论