【Lua学习1】LuaInterface的简单学习,CLR与Lua相互调用

本文介绍了如何使用LuaInterface实现C#(CLR)与Lua的相互调用。主要内容包括:将LuaInterface的dll文件添加到工程中,执行Lua代码、脚本文件,注册C#方法为Lua全局函数,加载和实例化CLR类型,以及处理带有out和ref参数的方法。通过Lua脚本控制游戏逻辑,实现热更新。
摘要由CSDN通过智能技术生成

写在前面

本文参考b站教程《lua热更新技术》

C#(CLR)与Lua相互调用

  • LuaInterface包括两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和c#之间的互相调用
  • 因为官网的包没有Luanet,这里用的是luainterface-1.5.3,然后把压缩包里的两个dll文件LuaInterface.dl和Luanet.dlll拖进工程的“引用”里(注意一定要放在项目文件夹下的…/bin/Debug/,不然会报错),之后把"LuaInterface.dll"添加进引用中
    在这里插入图片描述
    在这里插入图片描述

实践

在C#中的第一串Lua代码

Lua lua = new Lua(); //创建Lua的解释器(构造函数)
lua["num"] = 34; //定义一个num
lua["str"] = "a string"; //定义一个字符串
lua.NewTable("tab"); //创建一个表

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

Console.ReadKey();

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

在热更新中,只需要写好解析lua脚本的代码,然后C#代码不需要变动,只需要修改lua脚本就好,通过lua脚本控制游戏逻辑。

  • lua.DoString(" Lua的代码 "); //执行一段Lua的代码
  • lua.DoFile(“mylua.lua”); //执行lua脚本

PS:Lua的脚本要在SciTE(LuaforWindow)中写,然后把lua文件放在项目的项目文件夹下的…/bin/Debug/下

 //因为位于同样的Lua解析器环境当中,所以可以访问得到这些变量
lua.DoString("num=2"); //执行一段lua代码
lua.DoString("str= 'a string' ");
object[] values = lua.DoString("return num,str"); //返回一个字符串

foreach (object obj in values
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值