2013-11-16 4 views
0

У меня есть некоторые проблемы с библиотекой C# luainterface:проблем luainterface

1. Так что загружает сценарий и извлечь его функцию так:

LuaFunction function = lua.GetFunction("Update"); 

Но что, если я загружаю два различных сценариев, содержит функции с тем же именем. Как извлечь две разные функции с тем же именем из сценариев1 и script2?

2. Если я загружаю функции в память, можно ли разместить конкретную, а не все функции?

3. Когда я использую метод Lua.DoFile, я хочу выполнить определенную функцию из файла. Любые идеи, как это сделать?

Редактировать

2. я обнаружил, что я могу сделать что-то вроде этого

string f = @" 
     function hh() 
      end"; 

     var result = lua.DoString(f)[0] as LuaFunction; 

, но по какой-то причине я получаю пустое исключение. Любые идеи почему?

ответ

0

DoString вернет то, что вернет ваш скрипт.

lua.DoString ("return 10+10")[0]; // <-- will return Double. 20 

Если вы хотите, чтобы получить функцию Lua в качестве объекта LuaFunction необходимо вернуть функцию, или даже лучше просто использовать оператор [], чтобы получить глобальное значение чч.

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, когда вы не нужны функции больше.

+0

Thank you. Это именно то, чего я хотел. Всего несколько быстрых вопросов. Почему мне нужно использовать «[0] в« lua.DoString («return 10 + 10») [0]; »? Так что мне удалось загрузить эти отдельные функции в память. Я загрузил их много в список (в то время программа занимает около 54 МБ), но когда я удаляю все LuaFunctions и очищаю список, программа по-прежнему занимает около 34 МБ ОЗУ. Так что, как я понимаю, эти функции все еще хранятся в памяти компьютера, хотя я их и использовал. что-то не так? – user2055675

+0

И можно ли получить все глобальные переменные, определенные в сценарии .lua? Я знаю, что я могу использовать lua.Globals, но он возвращает только глобальные переменные, определенные внутри .Net-программы, а не скрипта. – user2055675

+0

Еще один вопрос, если это не так много. Можно ли получить локальные переменные, которые определены в сценарии .lua (внешняя область функций)? – user2055675

Смежные вопросы