Lua与C#的交互实现

lua与C#交互使用LuaInterface实现
定义变量:
1,Lua lua = new Lua() --定义一个解释器
2,lua["num"] = 34 --定义一个小数变量
3,lua["str"] = "string" --定义一个字符串变量

取得lua中变量:

int num = (int)lua["num"]
string str = (string)lua["str"]

在C#中执行lua脚本,语句
lua.DoFile("这里输入一个lua文件")
lua.DoString(“这里输入一条lua语句”)

Lua和C#的类型对应
nil null
string System.String
number System.Double
boolean System.Boolean
table LuaInterface.Table
function LuaInterface.Function

把一个C#方法注册到Lua的一个全局方法

//把一个类中的普通方法注册进去
lua.RegisterFunction("在Lua中的方法名",obj,obj.GetType().GetMethod("C#中的方法名"))
//在Lua中调用
lua.DoString(" 在Lua中的方法名 ");

//把一个类的静态方法注册进去
lua.RegisterFunction("在Lua中的方法名",null,Typeof(类名).GetMethod("C#中的静态方法名"))
//在Lua中调用
lua.DoString(" 在Lua中的方法名 ");

Lua中使用C#类

require"luanet"--加载CLR的类型、实例化CLR对象
luanet.load_assembly("System.Windows.Forms")
Form = luanet.import_type("System.Windows.Forms.Form")--赋值变量到lua中
print(Form)
在lua中使用C#中的类创建对象的时候,会自动分配最合适的构造方法

Lua中访问C#中的属性和方法

Lua代码中,访问C#对象的属性的方式和访问table的键索引一样
obj.name obj["name"]
Lua代码中,访问C#对象的普通函数的方式和调用table的函数一样
对象后加:号,调用前要实例一个对象
obj:method()

Lua中访问C#中方法-特殊情况

lua中的调用和返回值obj:OutMethod(34)
--out参数不需要参数,这个返回一个table,里面的值为{34,34,12}

obj:OutMethod(10,10)
--ref参数需要传入,返回一个table有个两个值(value1,value2)

**lua中默认认为会有返回值,这个值可能是空,接收返回值,空的也得接收完,才能接收到第二个返回值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 1. 写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语...
    杰嗒嗒的阿杰阅读 3,450评论 9 31
  • 七月二十九 星期六 天气 晴 昨天侄女过百岁,亲朋好友在一起那个高兴,不知不觉得就喝大了,今早还...
    王晨丹的爸爸阅读 156评论 0 0
  • 记得以前和一个盆友开始关系不错,那时候年少,经常拉着人家抱怨生活的种种不如意。今天讲这个事情我好冤,明天说那个事情...
    桃花小境容阅读 235评论 0 0
  • 文/稳心山人 “真不愧是行走的中华老歌库……”看到朋友圈里的评论,我又点开了一首陈百强的《偏偏喜欢你》,不一会,我...
    稳心山人阅读 446评论 6 1