将对象从c#传递到Lua脚本

本文关键字:Lua 脚本 对象 | 更新日期: 2023-09-27 18:10:51

我正在使用c#的luainterient,并且已经正确设置了一切

我想要能够做的是,当脚本使用lua.DoFile()启动时,脚本可以访问一个播放器对象,我可以发送…

当前代码:

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

但是正如你所看到的,脚本将无法访问Player对象

将对象从c#传递到Lua脚本

我看到两个选项。第一个是让你的播放器成为Lua的一个全局变量:

QMain.lua['player'] = 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);        
}