我一直在为游戏编写一些脚本,脚本是用Lua编写的。游戏要求之一就是你的lua脚本中的Update方法(每帧被称为)可能不会超过2-3毫秒,如果游戏刚刚结束。我只需要调用Multitasking.RunTask(SomeFunction),然后任务作为协程运行,然后我必须在我的代码中分散Multitasking.Yield(),它会检查任务已经运行了很长时间,如果超过2毫秒,它会暂停任务并在下一帧恢复。这是好的,除了我必须在整个代码中分散Multitasking.Yield()无处不在,而且这真是一团糟。Lua任务调度
理想情况下,我的代码会在运行时间过长时自动产生。那么,是否有可能采用Lua函数作为参数,然后逐行执行它(也许在Lua中解释Lua,我知道这是可能的,但是我怀疑如果你拥有的只是一个函数指针,这是可能的)?通过这种方式,我可以在每一行之间自动检查运行时间和产量。
编辑::要清楚,我正在修改游戏,这意味着我只能访问Lua。不允许使用C++技巧。
这看起来好像需要访问C++源代码? – Martin 2010-04-22 01:47:16
它是C,而不是C++ – Javier 2010-04-22 03:59:31
''调试'库是从Lua中导出的。你可以直接从Lua调用'debug.sethook()'。 – 2010-04-22 04:13:10