版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sky1466181491/article/details/79385613
1)Lua中访问C#中的属性跟方法
require "luanet"
luanet.load_assembly("System")
Int32 = luanet.import_type("System.Int32")
num=Int32.Parse(1234)--call the method in csharpClass
print("Num is",num)
print(Int32)
在C#中编写Lua脚本:
lua解释器:
Lua lua=new Lua();
声明变量:
lua.DoString(str="siki是个傻孩子");
注:在C#中可以使用return返回lua中的值
例:
lua.DoString(return str)//str是lua中的一个变量名
执行文件:
lua.DoFile(Lua文件名.lua)
注:Lua语言的编码格式是ANSI否则在C#中会出错
把一个C#方法注册进Lua中:
普通方法:
lua.RegisterFunction("在lua中显示的方法名",注册的对象,注册的对象的方法)
lua.RegisterFunction("LuaFunction",obj,obj.GetType().GetMethod("注册的方法名"))
静态方法:lua.RegisterFunction("在lua中显示的方法名",null,typeof(静态对象).GetMethod("静态方法名"))
例:
lua.RegisterFunction("LuaStaticFunction",null,typeof(MyClass).GetMethod("注册的静态方法名")
()");
4)在Lua中使用C#代码:
require: // 引入C#中的动态链接库
Lua代码中,访问C#对象的属性的方式和访问table的键索引一样,比如obj.name 或者 obj["name"]
Lua代码中,访问C#对象的普通函数的方式和调用table的函数一样,比如obj:method1()
当有重载函数的时候,调用函数会自动匹配第一个能匹配的函数
可以使用get_method_bysig函数得到C#中指定类的指定参数的函数用法
luaMethod = get_method_bysig(Obj,"CSharpMethod","System.String")
6)Lua注册C#中事件委托(event delegate)