1

I am trying to make an intro to a game with some strings that I want one to wait for another to pop up, and I don't directly want to use Thread.sleep() for it to wait, because I am not sure if that is the best option. Is there any other way to make something wait than making the thread sleep, or will I just have to make the thread sleep?

4

4 に答える 4

5

これがゲームの場合は、スリープやタイマーを使用しないでください。

通常、ゲームには独自の内部クロック メカニズムがあります。これは、フレームをできるだけ速くレンダリングしようとすることを意味します。OnRender メソッドは、ゲームの現在の時間で呼び出されます。これを使用して、次の画面に進むのに十分な時間が経過したかどうかを判断できます。

これは、フレーム 1 の時点 A が与えられることを意味します。フレーム 2 のデルタまたは別の時点 B が与えられます。デルタを使用するか、自分でデルタを計算することによって、経過した時間を判断できます。これは、タイミング状況の非常に効率的なメカニズムであり、ゲームがシングル スレッドの場合は非常にうまく機能しました。どんなプログラムでも、何もブロックしないという考え方があります。

通常ブロックする理由は、ディスクからの読み取り、ネットワーク、GPU へのデータの書き込みなどの I/O が原因です。あなたの状況では、ブロックせずにすべてを行うことができます。

これは、このhttps://gamedev.stackexchange.com/questions/1589/fixed-time-step-vs-variable-time-stepのまともなページです

于 2013-06-30T20:44:35.060 に答える
4

これには標準のメカニズムがあります: Object.wait()およびObject.notify() (オーバーロード/バリアントを使用)。あるスレッドで何らかのイベントが発生するのを待つだけで、他のスレッドがnotifyAllその発生をあなた (または の場合は全員) に通知する責任があります。

で導入された新しい条件メカニズムを利用することもできますjava.util.concurrent

于 2013-06-30T20:43:15.650 に答える
0

これをゲームで作るなら、libgdx の Actions のようなものを使ってみませんか? さまざまなアクターを連鎖させるだけです。可視性や位置などのプロパティが必要な値に達するたびに、次のアクションをトリガーします。プロパティの条件は、ゲームの更新ループごとにチェックされます。

または、swing アプリの場合は、タイマーを使用してこれらのプロパティを確認します。

于 2013-06-30T20:45:19.077 に答える