【发布时间】:2011-02-10 20:46:30
【问题描述】:
我一直在为游戏编写一些脚本,这些脚本是用 Lua 编写的。游戏的要求之一是,如果游戏只是挂起,lua 脚本中的 Update 方法(每帧调用一次)可能需要不超过 2-3 毫秒的时间来运行。
我用协程解决了这个问题,我所要做的就是调用 Multitasking.RunTask(SomeFunction) 然后任务作为协程运行,然后我必须在我的代码中分散 Multitasking.Yield(),它检查多长时间任务一直在运行,如果超过 2 毫秒,它会暂停任务并在下一帧恢复。这没关系,除了我必须在整个代码中分散 Multitasking.Yield() 任何地方,这真是一团糟。
理想情况下,我的代码在运行时间过长时会自动生成。那么,是否可以将 Lua 函数作为参数,然后逐行执行(也许在 Lua 中解释 Lua,我知道这是可能的,但我怀疑如果你只有一个函数指针,这是否可能)?通过这种方式,我可以在每一行之间自动检查运行时并在必要时产生。
编辑:: 明确地说,我正在修改游戏,这意味着我只能访问 Lua。不允许使用 C++ 技巧。
【问题讨论】:
标签: lua