C#中使用LuaInterface笔记
2016-09-26 17:13
309 查看
一、准备工作:
1,访问http://luaforge.net/projects/luainterface/下载luaInterface包
2,下载luanet.dll将其放入c盘sysWOW64文件夹(32位放入system32文件夹)
3,将luaInterface.dll和luanet.dll放入工程中的bin文件夹
4,工程中using LuaInterface
二、C#中使用Lua语言
1.访问代码
2.执行Lua脚本文件或语句
lua.DoString(“lua语句”);
lua.DoFile(“lua脚本名称.lua”);
注意:使用DoFile的时候,应将lua文件放入项目bin/Debug文件夹中,否则运行会报错
3.把C#方法注册进Lua
(1)注册普通方法
lua.RegisterFunction(“NormalMethod”,obj,obj.GetType().GetMethod(“NormalMethod”))
注意:第一个参数,表示注册到lua后在lua脚本中方法的名字;第二个参数表示将哪个obj中的那个方法注册到lua中;第三个参数利用反射获取obj的类的信息中,注册的这个方法的名字(这个名字是C#中你定义的名字,与第一个参数区别)。然后执行脚本
lua.DoString(“NormalMethod()”);
(2)注册静态方法
lua.RegisterFunction(“StaticMethodName”,null,typeof(ClassName).GetMethod(“StaticMethodName”));
lua.DoString(“StaticMethodName()”);
三,Lua中使用C#的类
在lua中:
1、require “luanet”
2、加载程序集:luanet.load_assembly(“System”) –加载system.dll
3、加载类:Int32 = luanet.import_type(“System.Int32”)
四,在Lua中使用C#的属性
1、
加载程序集:luanet.load_assembly(“luaInterface”)
加载类:Int32 = luanet.import_type(“luaInterface.classname”)
class = classname()
2、访问属性:
class.propertyname
3、访问方法:
class:functionName()
五、特殊情况out和ref
1、c#中定义函数参数包含out,lua中调用该函数不需要传入out参数;接收返回值时,需要使用两个变量。如:
2、使用ref参数的时候,需要传入ref参数,其他与out一样
1,访问http://luaforge.net/projects/luainterface/下载luaInterface包
2,下载luanet.dll将其放入c盘sysWOW64文件夹(32位放入system32文件夹)
3,将luaInterface.dll和luanet.dll放入工程中的bin文件夹
4,工程中using LuaInterface
二、C#中使用Lua语言
1.访问代码
Lua lua = new Lua();//创建lua解析器 lua["num"] = 23;//定义一个名为num的lua变量 lua.newTable("tab");//创建一个表tab ={} double = (double)lua["num"]; string str = (string)lua["str"];
2.执行Lua脚本文件或语句
lua.DoString(“lua语句”);
lua.DoString("num=2")
lua.DoFile(“lua脚本名称.lua”);
注意:使用DoFile的时候,应将lua文件放入项目bin/Debug文件夹中,否则运行会报错
3.把C#方法注册进Lua
(1)注册普通方法
lua.RegisterFunction(“NormalMethod”,obj,obj.GetType().GetMethod(“NormalMethod”))
注意:第一个参数,表示注册到lua后在lua脚本中方法的名字;第二个参数表示将哪个obj中的那个方法注册到lua中;第三个参数利用反射获取obj的类的信息中,注册的这个方法的名字(这个名字是C#中你定义的名字,与第一个参数区别)。然后执行脚本
lua.DoString(“NormalMethod()”);
(2)注册静态方法
lua.RegisterFunction(“StaticMethodName”,null,typeof(ClassName).GetMethod(“StaticMethodName”));
lua.DoString(“StaticMethodName()”);
三,Lua中使用C#的类
在lua中:
1、require “luanet”
2、加载程序集:luanet.load_assembly(“System”) –加载system.dll
3、加载类:Int32 = luanet.import_type(“System.Int32”)
四,在Lua中使用C#的属性
1、
加载程序集:luanet.load_assembly(“luaInterface”)
加载类:Int32 = luanet.import_type(“luaInterface.classname”)
class = classname()
2、访问属性:
class.propertyname
3、访问方法:
class:functionName()
五、特殊情况out和ref
1、c#中定义函数参数包含out,lua中调用该函数不需要传入out参数;接收返回值时,需要使用两个变量。如:
//C#: public void TestOut(string str,out int count) { Console.WriteLine(str); count = 10; }
--Lua: program = Program() str,count = program:TestOut("nihao") print(str,count)
2、使用ref参数的时候,需要传入ref参数,其他与out一样
相关文章推荐
- Tolua使用笔记五:lua中遍历访问c#的Dictionary类对象与枚举类型
- Tolua使用笔记二:lua与C#的函数,变量交互方法
- Tolua使用笔记五:lua中遍历访问c#的Dictionary类对象与枚举类型
- c#学习笔记之十二 使用interface和使用virtual-new的区别
- Tolua使用笔记六:在lua中操作C#的委托事件与在lua中对Unity的GameObject的操作
- Tolua使用笔记六:在lua中操作C#的委托事件与在lua中对Unity的GameObject的操作
- Tolua使用笔记二:lua与C#的函数,变量交互方法
- C#中使用LuaInterface
- C# 学习笔记 -- 第三天 申明和使用数据
- C#中使用Oracle 存储过程笔记
- Chap 4 学习笔记-使用C#存储变量数据
- C#字符串的使用笔记
- C#学习笔记(二十二):使用文件高级
- C#字符串的使用笔记
- C#字符串的使用笔记
- C#学习笔记(二十二):使用文件高级
- (转)C#字符串的使用笔记
- C#学习笔记(二十一):使用文件基础
- Chap 4 学习笔记-使用C#存储变量数据
- C# 学习笔记(Interface) - 08