C# 与Lua的交互

本文介绍了如何使用LuaInterface.dll和Luanet.dll实现C#与Lua脚本语言的交互。包括C#调用Lua脚本、注册C#方法到Lua环境中及Lua调用C#中的方法和字段等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值