Lua 和 C#是通过一个开源技术LuaInterface进行交互的。
LuaInterface包含两个核心类库:LuaInterface.dll 和 Luanet.dll
C#访问Lua的代码时:---依赖LuaInterface.dll
需要引入这两个类库(在C#项目中引用),然后创建Lua解释器:Lua lua = new Lua( );
有两个方法可以访问->DoString( "lua语句") 和 DoFile( lua文件)
把一个C#类方法注册进Lua的一个全局方法:
//把一个类中普通方法注册进去
lua.RegisterFunction("LuaFun",obj,obj.GetType( ).GetMethod("NormalFun")); //LuaFun是注册进Lua后的方法名,obj和第三个参数是把 哪个对象的哪个方法注册进去
lua.DoString("LuaFun"); //调用
//把一个类中静态方法注册进去
lua.RegisterFunction("LuaStaticFun",null,typeof(classname).GetMethod("StaticFun"));//null:因为静态不属于特定对象
Lua访问C#(Lua中使用C#中的类):---依赖Luanet.dll
主要有3大步骤:
①require "luanet" --先引入luanet.dll
②luanet.load_assembly( "System" ) --再加载C#中的动态链接库dll(先引入dll) 或 自己的namespace,即程序集
③luanet.import_type( "System.Int32" ) --最后引入链接库中某个类(再引入类型)
在Lua中使用C#中的类型创建对象时,会自动匹配最合适的构造方法。