lua与C#交互使用LuaInterface实现
定义变量:
1,Lua lua = new Lua() --定义一个解释器
2,lua["num"] = 34 --定义一个小数变量
3,lua["str"] = "string" --定义一个字符串变量
取得lua中变量:
int num = (int)lua["num"]
string str = (string)lua["str"]
在C#中执行lua脚本,语句
lua.DoFile("这里输入一个lua文件")
lua.DoString(“这里输入一条lua语句”)
Lua和C#的类型对应
nil null
string System.String
number System.Double
boolean System.Boolean
table LuaInterface.Table
function LuaInterface.Function
把一个C#方法注册到Lua的一个全局方法
//把一个类中的普通方法注册进去
lua.RegisterFunction("在Lua中的方法名",obj,obj.GetType().GetMethod("C#中的方法名"))
//在Lua中调用
lua.DoString(" 在Lua中的方法名 ");
//把一个类的静态方法注册进去
lua.RegisterFunction("在Lua中的方法名",null,Typeof(类名).GetMethod("C#中的静态方法名"))
//在Lua中调用
lua.DoString(" 在Lua中的方法名 ");
Lua中使用C#类
require"luanet"--加载CLR的类型、实例化CLR对象
luanet.load_assembly("System.Windows.Forms")
Form = luanet.import_type("System.Windows.Forms.Form")--赋值变量到lua中
print(Form)
在lua中使用C#中的类创建对象的时候,会自动分配最合适的构造方法
Lua中访问C#中的属性和方法
Lua代码中,访问C#对象的属性的方式和访问table的键索引一样
obj.name obj["name"]
Lua代码中,访问C#对象的普通函数的方式和调用table的函数一样
对象后加:号,调用前要实例一个对象
obj:method()
Lua中访问C#中方法-特殊情况
lua中的调用和返回值obj:OutMethod(34)
--out参数不需要参数,这个返回一个table,里面的值为{34,34,12}
obj:OutMethod(10,10)
--ref参数需要传入,返回一个table有个两个值(value1,value2)
**lua中默认认为会有返回值,这个值可能是空,接收返回值,空的也得接收完,才能接收到第二个返回值
网友评论