0

FPSラグが発生しています。私は周りを見回して、人々は使うように言います

[self schedule:@selector(gameLoop:) interval: 1/60.0f];

これを使用すると、途切れ途切れのラグが発生します。しかし、私が使用するとき

[self schedule:@selector(gameLoop:)];

それははるかにスムーズです。これが私の動きのコードのスニペットです。

- (void)gameLoop :(ccTime)dt
{
    [self manageCannon:dt];
    [self manageBullets:dt];
    [self manageEnemies:dt];
    [self manageAllies:dt];
}
- (void) manageEnemies :(ccTime)dt
{
    enemyClass *tempEnemy;
    for(int i = 0; i < [enemies count]; i++)
    {
        tempEnemy = [enemyClass new];
        tempEnemy = [enemies objectAtIndex:i];

        tempEnemy.position = ccp(tempEnemy.position.x-tempEnemy.speed*dt,tempEnemy.position.y);

        if((tempEnemy.position.x - tempEnemy.range) < [wall getwally])
        {
            tempEnemy.speed = 0;
        }
        if(tempEnemy.health < 1)
        {
            tempEnemy.alive = false;
        }

        if(tempEnemy.alive == false)
        {
            [enemies removeObjectAtIndex:i];
            [tempEnemy removeFromParentAndCleanup:true];
        }
    }
}

私は常に自分のコードをゼロから作成しようとしています。そのため、私が行っている他のことで私を助けることができれば、それは間違っています。それは私にとって非常に役に立ちます.

4

1 に答える 1

0

提供された情報から、アプリの速度を低下させている原因を特定するのは困難です。LearnCocos2D が提案したように、Instruments を使用して、遅い部分がどこにあるかを把握できます。または、非常に詳細な分析が必要な場合は、コードで次のマクロをいつでも使用できます。

#define TIC start = [NSDate date]
#define TOC -[start timeIntervalSinceNow]
#define TOCP NSLog(@"TIME: %f", TOC)

ご利用にあたっては、必ずNSDate *start利用範囲を申告してください。次に、一連の TIC/TOC または TIC/TOCP のペアをコードに配置して、コードがさまざまな場所で取っている時間を出力します。このようにして、ボトルネックを非常に迅速に見つけることができます。

于 2013-08-24T07:23:24.810 に答える