【发布时间】:2014-02-18 22:47:20
【问题描述】:
我正在使用一个允许您在 Lua 中编程的游戏引擎。游戏引擎命令位于从 C 创建的 DLL 中。有一个用 C 创建的 exe 调用 Lua 文件。这个 Lua 文件是你放置所有游戏代码的地方,包括主循环。 exe没有来回切换,但您可以从DLL调用函数。
所以在主循环之前,我创建了一个函数,我将从中创建一个协程。这个函数迭代一个相当大的表,所以每 n 次迭代我产生。这个函数有一个无限的while循环,因为我需要这些东西来运行主游戏循环的每个循环,但如果它在多个循环之间分割就可以了。
然后我用这个函数作为参数创建一个协程。然后在主游戏循环中恢复这个协程。
当我运行我的代码时,我得到了错误:tempt to yield across metamethod/C-call boundary
我在网上阅读了一些东西,但并没有真正理解这里的问题。一旦 exe 调用 Lua 文件,在 Lua 文件完成之前它根本不会返回到 exe,而且由于我在 Lua 文件中有我的主循环,它在我的测试用例中永远不会完成。
那我有什么选择呢?
【问题讨论】:
标签: lua