当将Lua Coroutines与C#一起使用时,是否可以使用Lua Coroutine回到C#



在我正在制作的游戏中,我主要是在C#中开发它,但是我想使用Lua Coroutines处理一些游戏逻辑,因为它们可以表示采取的动作在多个帧上很好。我以前从未真正使用过LUA,所以我不确定这是否会起作用。理想情况下,我希望C#游戏更新功能能够添加一个或多个Lua Coroutines,以便在队列中执行,然后每个帧在队列上迭代,执行每个Coroutine,直到屈服或完成为止。我只想知道这是否可能,如果是这样,则如何实现它,因为它似乎不符合LUA使用的" lua_dofile"范式。

这是一些C#伪代码,可以表明我的意思:

GameUpdate()
{
  // Update game logic
  // (which may add one or more Lua coroutines to the queue)
  // Update input, physics, sound, etc
  // In Lua:
  //  For each coroutine in queue,
  //  execute it until it reaches a yield,
  //  or it finishes, whichever comes first
}
GameRender()
{
  // Render a frame
}

更新:本文(http://www.gamedev.net/topic/585128-luainterface-and-coroutines/)给出了我正在寻找的答案。简而言之,这是可能的。

是的。它与" Dofile范式"相吻合:主机应用程序公开了脚本注册回调供主机打电话的手段;例如RegisterEventHandler(foo)hostTypeInstance.OnFoo = foo

当主机运行用户脚本时,脚本可以传递主机回调函数/coroutines,并且主机将其保存给他们。

主机可以在每个帧,单击鼠标或您提起诉讼的任何其他框架时都可以调用/恢复函数/coroutines。

最新更新