コード全体で多くのタイマーを使用するゲームを作成しました。ただし、タイマーは非常に短い時間で多くのタスクを処理する必要があるため、ゲームに遅延が発生するという問題が発生します。たとえば、私のタイマーは (0.05) の間隔で実行され、画面上の多くの画像を描画および更新する必要があります。プログラムがよりスムーズに実行されるように、ワークフローを分散する方法はありますか?
ありがとう
ケビン
コード全体で多くのタイマーを使用するゲームを作成しました。ただし、タイマーは非常に短い時間で多くのタスクを処理する必要があるため、ゲームに遅延が発生するという問題が発生します。たとえば、私のタイマーは (0.05) の間隔で実行され、画面上の多くの画像を描画および更新する必要があります。プログラムがよりスムーズに実行されるように、ワークフローを分散する方法はありますか?
ありがとう
ケビン
NSThread
の代わりに使用しNSTimer
ます。NSThreadは独立したスレッドで実行され、メインのUIスレッドから起動されないため、この領域でより多くの成功を収めています。スレッドのループで、1/20(0.05)秒間スリープします。スレッドはUIスレッドで実行されていないため、そのすべてのタスクでUIの速度が低下することはありません。ただし、UIで実行されていないperformSelectorOnMainThread
ため、このバックグラウンドスレッドからUIを更新するには、呼び出す必要があります。更新メソッド(単純なブール値)にロックをかけ、最後のUI更新が行われていない場合は、これをスキップするように指示します。次に、処理時間が不足している場合は、フレームを1つか2つあちこちにドロップします。また、再描画する前に、実際に何かが変更されているかどうかを確認するために多くのチェックを行います。