【发布时间】:2019-07-25 17:13:51
【问题描述】:
我在“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 函数?
谢谢。
【问题讨论】:
-
您需要在返回的表中查找
mmToin,而不是在全局表中。 -
你能写出这样的sn-p吗?我在返回的表中搜索了
DynValue.Table,但长度为0 -
不幸的是,我真的不知道如何在 C# 中做到这一点,我习惯于使用 C 与 Lua 进行交互。但是 Lua 内部结构应该是一样的,所以
DoFile应该在堆栈上留下一个表(返回值),其中有一个键mmToin和函数的值。 -
“不工作”是什么意思?究竟出了什么问题?
-
那么异常被触发并带有消息
function is not a function and has no __call metamethod。我想是因为找不到函数。