C# 与Lua的交互

C#调用Lua用 LuaInterface.dll;

Lua调用C#用Luanet.dll;

他们之间的交互主要就是靠这两个库文件,

需要把渣两个文件刚到VS工程下的Debug文件夹下。

using LuaInterface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LuaDemo_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Lua lua = new Lua();

            //lua["a"] = 123;
            //Console.WriteLine(lua["a"]);

            //lua.DoFile("Lua_1.lua");//调用Lua脚本
            //lua.DoString("array.a()");//调用数组中的函数

            //Console .WriteLine( lua["str"]); //调用Lua中的字段
            Program p = new Program();

            //把一个c#类中的普通方法注册到lua 中
            lua.RegisterFunction("NormalMethod", p, p.GetType().GetMethod("NormalMethod"));
            lua.DoString("NormalMethod()");

            //把一个c#类中的静态方法注册到lua 中
            lua.RegisterFunction("StaticMethod", null, typeof(Program).GetMethod("StaticMethod"));
            lua.DoString("StaticMethod()");
            Console.ReadLine();
        }
        public void NormalMethod()
        {
            Console.WriteLine("ok_1");
        }
        public static void StaticMethod()
        {
            Console.WriteLine("ok_static");
        }
    }
}

----------------------------------------------------------------------------

lua调用C#

lua

require("luanet")
luanet.load_assembly("System")--导入dll
int32= luanet.import_type("System.Int32")--引入类型

num=int32.Parse("123")--引入类型后就可以调用该类型的方法

print (num )

然后运行VS  在VS中调用该Lua文件


-------------------------Lua代码--------------

require("luanet")
luanet.load_assembly("System")--导入dll
int32= luanet.import_type("System.Int32")--引入类型

num=int32.Parse("123")--引入类型后就可以调用该类型的方法

print (num )

----------Lua 访问C#中的字段和方法
luanet.load_assembly("testLuaDemo_1")
p=luanet.import_type("testLuaDemo_1.Program")--这块传进来的是一个类

print(p():NormalMethod())--这块是通过类调用方法
p1=p()--这一步至关重要  没有这一步就回报错 (找不到C#中的任何东西)
print (p1.str)
p1:Test_1()

猜你喜欢

转载自blog.csdn.net/yuan_bowen/article/details/80897341