2013-07-01 25 views
3

我使用Lua来扩展我的C++应用程序。我的应用程序有一些可以通过Lua扩展的部分(例如:timer event,ui events),因此对于每个部分,我都会创建一个新状态并加载与该部分相关的文件和函数,以便更改零件并重新加载它不会影响其他部分。将lua状态连接到另一个状态

现在我处于一种情况,我需要一些一般文件在所有其他部分之间共享。

例如:我正在为定时器事件部分做一个函数,并且在这些常规文件中定义了一个对象,我想在此函数中更改其信息。 现在我在ui事件部分,我需要当我在通用文件中访问该对象时,我希望它包含从ui部分进行的更改。

所以我想为这些创建另一个状态,并为其他状态的全局表做一个__index来搜索这个状态,如果他们没有找到它的东西:))显然我不知道如何使

我希望有人明白我的意思,并告诉我如何做到这一点?!

+1

您可能想要使用协程或使用现有的Lua多线程模块之一[我喜欢这个比较](http://kotisivu.dnainternet.net/askok/bin/lanes/comparison.html)。他们大多数应该能够以某种方式处理你想要的东西 – dualed

回答

3

lua_newstatelua_newstate创建的Lua状态是完全分开的,不能直接对话:您需要手动将数据从一个状态复制到另一个状态。

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

+0

谢谢,对于我的信息,我怀疑我能做到这样的事情。我会去表达lua函数:) –