2011-10-11 3 views
1

Я использую LuaInterface с C# и правильно настроил все.Pass Object to Lua Script from C#

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

Текущий код:

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

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

ответ

5

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

Использование QMain.lua [ "игрок"] = Игрок, работал нормально. Спасибо! – FrenchyNZ