从C#传递对象到Lua脚本

时间:2011-10-11 10:46:38

标签: c# lua luainterface

我正在使用LuaInterface和C#,并且已经正确设置了所有内容。

我希望能够做的是,当使用lua.DoFile()启动脚本时,该脚本可以访问我可以发送的Player对象...

当前代码:

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

但是你可以看到脚本无法访问Player对象。

1 个答案:

答案 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);        
}