使用 Lua 脚本返回的对象

我有一个名为 "Conversion.lua" 的 Lua 脚本:

local conversion = {}

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

return conversion

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

如果这个函数不在对象里,我会使用以下代码:

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 函数? 谢谢。

点赞
用户1489138
用户1489138

你需要将 Lua 脚本返回的值作为 DynValue 对象保留,并在 Table 属性中查找所需的函数。

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

接着,你就可以使用以下代码来调用你的函数:

scp.Call(dyn.Table.Get("yourFunctionHere"), parameters).ToObject<double>();
2019-03-04 11:58:37