0

私が作っているゲームでは、主に C# で開発していますが、Lua コルーチンを使用していくつかのゲーム ロジックを処理したいと考えています。これは、複数のフレームにわたるアクションをうまく表現できるからです。Lua を実際に使用したことがないので、これが機能するかどうかはわかりません。理想的には、C# のゲーム更新関数で、実行する 1 つ以上の Lua コルーチンをキューに追加し、各フレームでキューを反復処理して、各コルーチンを生成または終了するまで実行できるようにしたいと考えています。これが可能かどうか、可能であれば実装方法を知りたいだけです。これは、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/) は、私が探していた答えを提供します。要するに、それは可能です。

4

1 に答える 1

3

はい、可能です。これは「dofile パラダイム」にうまく適合します。ホスト アプリは、スクリプトがホストが呼び出すコールバックを登録する手段を公開します。RegisterEventHandler(foo)などhostTypeInstance.OnFoo = foo。 _

ホストがユーザー スクリプトを実行すると、スクリプトはホスト コールバック関数/コルーチンを渡すことができ、ホストはハンドルをそれらに保存します。

ホストは、マウスがクリックされるたびに、またはそれらが呼び出されるように配列したものはいつでも、フレームごとに関数/コルーチンを呼び出し/再開できます。

于 2012-10-17T16:30:43.887 に答える