Luainterface的学习

通过LuaInterface完成Lua和C#之间的互相调用

①需要下载LuaInterface包:核心库:LuaInterface.dll和Luanet.dll
②在C#脚本中加入引用上面的核心库
③进行代码编写

1.在C#中执行访问Lua代码
Lua lua = new Lua(); //创建Lua解析器
          lua["num"] = 2;   //定义一个num
          lua["str"] = "string";   //定义一个字符串
          lua.newTable("tab");    //创建一个表  tab={}

2.取得lua环境中的变量

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

3.在C#中执行lua脚本文件或者脚本字符串

Lua lua = new Lua();

①在C#中执行lua脚本用lua.DoFile("MyLua.lua")(lua脚本文件名称)

**注意:lua脚本需与C#脚本在同一文件夹中,lua脚本的编码格式需要是ANSI编码格式

②在c#中对lua脚本进行修改用lua.DoString("num=2")(变量定义赋值) 
                 object[] values = lua.DoString("return num") (返回num的值存取在values中)

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

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

①把一个类的普通方法注册进lua

lua.RegisterFunction("NormalMethod",obj,obj.GetType().GetMethod("NormalMethod")); //注册
lua.DoString("NormalMethod()"); //调用方法

②把一个类的静态方法注册进lua

lua.RegisterFunction("StaticMethod",obj,typeof(ClassName).GetMethod("StaticMethod"));//注册
lua.DoString("StaticMethod()");  //调用方法

5.在Lua中使用C#中的类
require "luanet"  --引用LuaNet.dll
luanet.load_assembly("System")  --引用C#中的dll文件(命名空间!!)
Int32=luanet.import_type("System.Int32")  --引用dll中的类 (命名空间中的某个类名)
num = Int32.Parse("123")  --调用类中的方法
print(num)

6.在Lua中访问C#中的属性和方法
Lua代码中,访问C#对象的属性的方式和访问table的键索引一样,
比如obj.name 或者 obj["name"]

7.Lua代码中,访问C#对象的普通函数的方式和调用table的函数一样,

比如obj:method()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值