美文网首页
Lua与C#的交互实现

Lua与C#的交互实现

作者: AngerCow | 来源:发表于2017-11-16 10:22 被阅读0次

    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中默认认为会有返回值,这个值可能是空,接收返回值,空的也得接收完,才能接收到第二个返回值

    相关文章

      网友评论

          本文标题:Lua与C#的交互实现

          本文链接:https://www.haomeiwen.com/subject/ovtlvxtx.html