将一个lua状态连接到另一个lua状态

我正在使用 Lua 扩展我的 C++ 应用程序。我的应用程序有一些部分(如 timer eventui events),可以通过 Lua 扩展。因此,对于每个部分,我都会创建一个新状态,并在其中加载与该部分相关的文件和函数,这样对一个部分进行更改并重新加载不会影响其他部分。

现在,我遇到了一个需要在所有其他部分之间共享某些通用文件的情况。

例如:我正在为计时器事件部分编写一个函数,并在其中定义了通用文件中的一个对象,希望在该函数中更改其信息。现在,我正在处理 UI 事件部分,当我访问通用文件中的该对象时,我希望它包含从 UI 部分进行的更改。

所以,我考虑在此处创建另一个状态,并为其他状态中的全局表创建 __index,以便在找不到某些内容时搜索该状态:))_显然我不知道如何做到这一点_。

我希望有人能理解我的意思并告诉我如何制作这个东西!

点赞
用户107090
用户107090

使用 lua_newstatelua_newstate 创建的 Lua 状态完全分离,不能直接交流,您需要手动从一个状态复制数据到另一个状态。

您可以为一个状态中的全局表设置一个 __index 元方法,以在另一个状态中查找数据,但您需要在 C 中执行此操作或导出一个 Lua 函数来执行此操作。

2013-07-01 12:06:01