Передача объекта в 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);        
}
Другие вопросы по тегам