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

C#中调用lua

2015-11-23 15:52 465 查看
首先引入LuaInterface.dll库文件

//创建Lua的解释器

Lua lua = new Lua();

//定义一个num

lua["num"] = 34;

Console.WriteLine(lua["num"]);

//定义一个字符串

lua["str"] = "string";

Console.WriteLine(lua["str"]);

//创建一个表 tab={}

lua.NewTable("tab");

Console.ReadKey();

//取得lua环境中的变量

double num = (double)lua["num"];

Console.WriteLine(num);

string str = (string)lua["str"];

Console.WriteLine(str);

//在C#中执行Lua脚本文件或者脚本字符串

//创建Lua的解释器

Lua lua = new Lua();

lua.DoString("num=2");

lua.DoString("str='a string'");

object[] values = lua.DoString("return num,str");

foreach (object obj in values)

{

Console.WriteLine(obj);

}

Console.ReadKey();

首先写一个lua文件,保存为aaa.lua

num=2

str="wang"

print(num,str)

接着导入lua文件到编译器,在编译器中设置它的属性为始终复制,并且lua文件的编码格式应该为ANSI,如果不是请用记事本修改

最后执行以下代码

//创建Lua的解释器

Lua lua = new Lua();

lua.DoFile("aaa.lua");

Console.ReadKey();

//lua和C#中类型的对应

nil null

string System.String

number System.Double

boolean System.Boolen

table LuaInterface.LuaTable

function LuaInterface.LuaFunction

//把一个C#方法注册进Lua的一个全局方法

static void Main(string[] args)

{

//创建Lua的解释器

Lua lua = new Lua();

Program p = new Program();

//把一个类中的普通方法注册进去

lua.RegisterFunction("LuaMethod",p,p.GetType().GetMethod("MyMethod"));

lua.DoString("LuaMethod()");

//把一个类的静态方法注册进去

lua.RegisterFunction("MyStaticMethod", null,typeof(Program).GetMethod("MyStaticMethod"));

lua.DoString("MyStaticMethod()");

Console.ReadKey();

}

public void MyMethod()

{

Console.WriteLine("haha");

}

public static void MyStaticMethod()

{

Console.WriteLine("这是一个静态方法");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: