2

ゲームのメイン ゲームループとして CADisplayLink を使用し、10 秒ごとに敵を生成する NSTimer を使用しています。私が使う...

    -(void)togglePause{
displayLink.paused = !displayLink.paused;
if (displayLink.paused) {
    [self.view addSubview:pauseOverlay];
}else {
    [pauseOverlay removeFromSuperview];
}

...ゲームループを一時停止しますが、敵をスポーンするタイマーは、ゲームが一時停止した後でも続行されます。タイマーを破棄してから別のタイマーを作成すると、一時停止ボタンを悪用して、ゲームの前に押すだけで済みません。 10 秒経過すると、敵がスポーンしなくなりますか? これに対する簡単な解決策はありますか?

4

1 に答える 1

3

NSTimer を捨てて、CADisplayLink が起動するたびにインクリメントするカウンターを使用します。nに到達したら、敵をスポーンし、カウンターをゼロにします。ユーザーが一時停止した場合、再開すると、カウンターは以前と同じになります。

于 2012-06-30T21:57:09.210 に答える