通过LuaInterface完成Lua和C#之间的互相调用
来源:互联网 发布:福建广电网络集团官网 编辑:程序博客网 时间:2024/05/06 15:01
**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的函数一样,
通过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()
0 0
- 通过LuaInterface完成Lua和C#之间的互相调用
- c和lua之间互相调用方法
- Lua编程之Lua和C之间互相调用方式
- LuaInterface的简单学习,CLR与Lua相互调用
- C和lua的互相调用
- Lua和C的互相调用
- C和lua的互相调用
- c++和lua互相调用
- 老生常谈之C++和C#之间互相调用
- 老生常谈之C++和C#之间互相调用
- 老生常谈之C++和C#之间互相调用
- Android 平台C# 与C++之间的互相调用方法
- lua和c语言互相调用的例子
- 【转】lua和c互相调用的程序示例
- Unity3D和Lua之间的相互调用
- C++ 和 lua代码互相调用
- C和C++之间库的互相调用
- 汇编和C代码之间的互相调用
- php json_decode解析json文件问题。
- 【Unity3d】将PSD直接导出成UGUI界面(一)
- git多用户协同
- Sambamba: process your BAM data faster!
- 从MVC到前后端分离
- 通过LuaInterface完成Lua和C#之间的互相调用
- 求帮助,simpleAdapter和listview 出现问题
- ubuntu 安装jdk及eclipse
- spark数据倾斜解决方案--原理及现象分析
- Android从屏幕底部弹出popupWindow
- 请教java中这个正则表达式该咋写
- js闭包解析
- 随机密码约瑟夫环
- Java文件拷贝的几种实现方案