我正在使用LuaInterface和C#,并且已经正确设置了所有内容。
我希望能够做的是,当使用lua.DoFile()启动脚本时,该脚本可以访问我可以发送的Player对象...
当前代码:
public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
QMain.lua.DoFile(LuaScriptPath);
}
但是你可以看到脚本无法访问Player对象。
答案 0 :(得分: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);
}