Передача объекта в Lua Script из C#
Я использую LuaInterface с C#, и все настроено правильно.
Я хочу, чтобы при запуске сценария с использованием lua.DoFile() этот сценарий имел доступ к объекту Player, который я могу отправить...
Текущий код:
public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
QMain.lua.DoFile(LuaScriptPath);
}
Но, как видите, скрипт не будет иметь доступа к объекту Player.
1 ответ
Решение
Я вижу два варианта. Первый - сделать вашего игрока глобальной переменной для Lua:
QMain.lua['player'] = Player
Тогда вы сможете получить доступ player
в вашем сценарии
Второй вариант - сделать так, чтобы скрипт определял функцию, принимающую игрока в качестве параметра. Так что если ваш текущий скрипт содержит ...code...
теперь он будет содержать:
function RunQuest(player)
...code...
end
и ваш код C# будет выглядеть примерно так:
public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
QMain.lua.DoFile(LuaScriptPath); // this will not actually run anything, just define a function
QMain.lua.GetFunction('RunQuest').Call(player);
}