美文网首页
C#中执行Lua脚本

C#中执行Lua脚本

作者: 混世小码农 | 来源:发表于2017-04-10 19:20 被阅读0次

     一:

    new lua().DoFile("myLua.lua");              //执行lua脚本      /myLua.lua:要         执行的lua的脚本名字

    new lua().DoString("num = 2");             //读取脚本

    注意:脚本文件必须和工程目录所在是同一个路径不然会找不到lua的          脚本

    对lua脚本的位置放置:

          1)直接将lua文件,放在工程目录下面的Debug文件夹下

           2)将lua脚本的属性中 "复制到输出目录" 选择“始终复制”

    二:c#将方法注册进lua

    三:lua中使用c#中的自定义类

    --1.导入luanet程序集,该程序集负责 lua call C#

    require “luanet”

    --2.加载程序集(命名空间)

    uanet.load_assembly(“System”)         // 加载程序集(我们说过程序集其实就是.exe或者.dll文件)

    --3.获取类别(获取类名)

    Test = luanet.import_type(“System.Test”)      //引入类(Test就是类名)

    注意:在lua中使用c#类创建对象的时候,会自动的匹配最合适的构造方法

    --4.调用构造函数初始化C#脚本的类对象

    --调用无参数的构造函数

    -- test = Test()

    --调用有参数的构造函数 ----int

    -- test = Test(10)

    --调用有参数的构造函数 ----string

    -- test = Test("10")

    -- lua调用C#构造函数规则---> 自动匹配最近的那个

    -- -对于某些情况并不适用,比如说C#函数中有两个一个参数的构造函数重载时即会发生匹配错误的情况

    --- 这种情况我们需要手动指定调用哪个构造函数

    test_argInt = luanet.get_constructor_bysig(Test,"System.String")

    t = test_argInt(3)

    -- 5.调用C#属性

    print(t.LanguageNume)

    -- 调用Test类中的TestPrint()方法,使用的是":"

    t:TestPrint(10);

    -- 调用Test类中的静态方法,使用的是"."

    Test.TestStatciPrint(9)

    --调用带有ref参数的方法

    t:RefMethod(8)

    --调用带有out参数的方法(带有out的参数可以不写,即不传参数)

    --  var,var2 = t:OutMethod("hello")

    -- print(var2)

    -- v1,v2,v3,v4 = t:OutMethod(10)

    tb = t:OutMethod(10)

    print(type(tb))

    -- 1.调用的函数有返回值,该多少就多少

    -- 2.调用的函数没有返回值,lua默认有返回值,值为 nil

    -- 3.调用的函数中带有out关键字,lua默认处理为该函数有返回值,返回值为out修饰的参数

    -- 4.如果函数存在返回值并且同时存在out参数列表,此时函数返回值无效,第一个参数返回的是最后一个out类型的参数,剩下的顺序排列

    相关文章

      网友评论

          本文标题:C#中执行Lua脚本

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