Проблемы с интерфейсом
У меня есть некоторые проблемы с библиотекой C# luainterface:
1. Итак, я загружаю скрипт и извлекаю его функции следующим образом:
LuaFunction function = lua.GetFunction("Update");
Но что делать, если я загружаю два разных скрипта, которые содержат функции с одинаковыми именами. Как извлечь две разные функции с одинаковыми именами из script1 и script2?
2. Если я загружаю функции в память, можно ли выделить конкретную, а не все функции?
3. Когда я использую метод Lua.DoFile, я хочу выполнить определенную функцию из файла. Есть идеи, как это сделать?
редактировать
2. Я обнаружил, что могу сделать что-то подобное
string f = @"
function hh()
end";
var result = lua.DoString(f)[0] as LuaFunction;
но по какой-то причине я получаю нулевое исключение. Есть идеи почему?
1 ответ
DoString вернет то, что возвращает ваш скрипт.
lua.DoString ("return 10+10")[0]; // <-- will return Double. 20
Если вы хотите получить свою функцию Lua как объект LuaFunction, вам нужно вернуть свою функцию, или, что еще лучше, просто используйте оператор [], чтобы получить глобальное значение hh.
lua.DoString ("function hh() end");
var hh = lua["hh"] as LuaFunction;
hh.Call ();
Вот пример: https://github.com/codefoco/NLuaBox/blob/master/NLuaBox/AppDelegate.cs#L46(но с использованием NLua вместо LuaInterface)
И не забудьте отпустить вызов LuaFunction Dispose
когда вам больше не нужна функция.