使用Lua脚本返回的对象

时间:2019-03-04 11:35:19

标签: c# lua moonsharp

我在“ Conversion.lua”文件中包含以下lua脚本:

local conversion = {}

function conversion.mmToin( value )
    return value * 0.0393701
end

return conversion

我需要使用C#代码中的函数mmToin,该函数包含在对象conversion中。

如果函数不在对象内部,我将使用以下代码:

Script scp = new Script();
scp.DoFile(GlobalConst.PATH_TO_SCRIPT_FOLDER + "Conversion.lua");
double resultFm = scp.Call(scp.Globals["mmToin"], 1).ToObject<double>();

但是如果我将其放在对象中,则无法使用该函数;我试过了:

double resultFm = scp.Call(scp.Globals["conversion.mmToin"], 1).ToObject<double>();

但不起作用。

如何在C#代码中使用mmToin函数? 谢谢。

1 个答案:

答案 0 :(得分:1)

您需要保留对lua脚本的返回值的引用作为DynValue对象,然后在Table属性中查找所需的函数。

DynValue dyn = scp.DoFile(GlobalConst.PATH_TO_SCRIPT_FOLDER + "Conversion.lua");

,然后您应该可以使用来调用函数

scp.Call(dyn.Table.Get("yourFunctionHere"), parameters).ToObject<double>();