Передача объекта в Lua Script из C # - PullRequest
1 голос
/ 11 октября 2011

Я использую LuaInterface с C #, и все настроено правильно.

Что я хочу сделать, так это то, что при запуске сценария с использованием lua.DoFile () сценарий имеет доступ к объекту Player, который я могу отправить ...

Текущий код:

public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
    QMain.lua.DoFile(LuaScriptPath);
}

Но, как вы видите, скрипт не будет иметь доступа к объекту Player.

1 Ответ

5 голосов
/ 11 октября 2011

вижу два варианта. Во-первых, сделать ваш игрок глобальной переменной для 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);        
}
...