C#中执行Lua脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中执行Lua脚本相关的知识,希望对你有一定的参考价值。

参考技术A  一:

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

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

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

对lua脚本的位置放置:

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

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

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

require “luanet”

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

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

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

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

--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))

以上是关于C#中执行Lua脚本的主要内容,如果未能解决你的问题,请参考以下文章

lua调用C#

Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

redis使用lua

在java中执行Lua脚本?

防止多次执行 Lua 脚本

lua脚本怎么获取当前正在执行的脚本的当前路径