lua ベースのスクリプト システムをゲーム エンジンに埋め込もうとしています。スクリプトでブロック コマンドと非ブロック コマンドの両方を使用できるようにしたいと考えています。次に例を示します。
character.walkTo(24, 359); // Blocks until character arrives
c = 35; // Non blocking, execution goes on to the next statement
"walkTo" は 1 フレーム以上の実行で "アクティブ" である必要があるため、関数全体ではなく Java ホストから一度に 1 つのステートメントを実行できるようにしたいと考えています。これは、必要のない実際のマルチスレッドを使用するのはやり過ぎになるためです。
ステートメントを 1 つだけ実行し、次のステートメントが実行されるまで実行状態を「一時停止」しておくことができれば、コマンドがホストで終了したかどうかをチェックすることで「walkTo」などのブロッキング コマンドを実装できます。それ以外の場合は、次のフレーム反復まで待ちます。
LuaJ (または他の Lua API) を使用して Java ホストから一度に 1 つのステートメントを実行する方法はありますか? または、lex と yacc を使用して独自のスクリプト エンジンを開発する必要がありますか?
どんな良いアイデアでも大歓迎です、ありがとう!