您的位置:首页 > 编程语言 > Lua

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.访问代码

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一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua