通过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的函数一样,
①需要下载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()