Использовать объект, возвращаемый скриптом Lua - PullRequest
0 голосов
/ 04 марта 2019

У меня есть этот скрипт lua внутри файла "Conversion.lua":

local conversion = {}

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

return conversion

Мне нужно использовать функцию mmToin в коде C #, содержащуюся внутри объекта 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>();

, но не работает.

Как я могу использовать функцию mmToin внутри кода C #?Спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Вам нужно сохранить ссылку на возвращаемое значение вашего lua-скрипта в качестве объекта DynValue, а затем найти нужную функцию в свойстве Table.

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

, и тогда вы сможете вызватьВаша функция с

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