C#中调用lua

来源:互联网 发布:好用的泡妞软件 编辑:程序博客网 时间:2024/05/17 00:04

首先引入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("这是一个静态方法");
        }











0 0
原创粉丝点击