C#でビデオゲームを作成しています。ゲームループの特定のポイントで特定のイベント(キーボード/マウスイベントなど)を処理したいと思います。たとえば、以下のようなものを書くための方法があります:C#で特定の時刻に発生したイベントのみを処理します。
void gameLoop()
{
// do updates
handleAllEvents();
render();
}
イベントは、ループ内の他のいくつかのポイントで発生した場合、私はそれらを処理するためにhandleAllEvents()
まで待つしたいと思います。 「イベント」私は例えば、標準的なC#のイベントシステムを意味することにより:
public event Action<object, KeyboardEventArgs> KeyPressed;
質問は明確に言葉で表現されていない場合は私に知らせてください。ありがとう!
イベントの全体的なポイントが同期的に処理されないのではなく、特定のコード行に達したときですか?おそらく、「イベント」が本当に「イベント」でない場合、調査するべき異なる設計戦略があります。また、リアクティブエクステンションは、イベントを処理するための本当に強力なフレームワークです - http://msdn.microsoft.com/en-us/data/gg577609見てみな。 –
ゲームの一般的なアプローチ(ポーリング)については、[mine](http://stackoverflow.com/q/8249664/593627)を参照してください。 –
@Sean:ゲームループは、ゲームプログラミングのかなり一般的なパターンです。必ずしもこのように実装する必要はありませんが、各フレームをレンダリングする前に入力ロジックとゲームロジックを完全に処理することがポイントです。イベントがランダムに発生する可能性があると、ゲームの設計が著しく複雑になります。 – Groo