簡體   English   中英

如何在Sprite Kit中保持fps速率恆定?

[英]How to keep fps rate constant in sprite kit?

使用sprite-kit框架構建適用於iOS的游戲。 游戲在大約一半的第一分鍾內都能平穩運行(保持60 fps的速率),但是隨着玩家進入游戲,幀速率逐漸開始降低。 隨着時間的流逝,它甚至下降到8 fps。 我以為這是游戲中增加的碎片和障礙的結果,所以我努力過一段時間后從父母那里清除了許多碎片和障礙。 游戲的設置方法如下:

游戲中有6種NSMutableArrays用於不同類型的碎片。 這是每個格式:

-(void)spawnDebris6 {

    SKSpriteNode * debris6 = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"debris6.png"] size:CGSizeMake(20, 20)];
    debris6.zPosition = 1.0;

    SKEmitterNode *debrisTrail = [SKEmitterNode kitty_emitterNamed:@"Dtrail"];
    debrisTrail.zPosition = -1.0;
    debrisTrail.targetNode = self;

    [debris6 addChild:debrisTrail];

    debris6.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:25];
    debris6.physicsBody.allowsRotation = NO;
    debris6.physicsBody.categoryBitMask = CollisionDebris;

    //set up a random position for debris
    //RandomPosition = arc4random() %248;
    //RandomPosition = RandomPosition + 10;
    debris6.position = CGPointMake (302, self.size.height + 65);

    [_debris6 addObject:debris6];
    [self addChild:debris6];

    //next Spawn:
    [self runAction:[SKAction sequence:@[
                                         [SKAction waitForDuration:deb6Time],
                                         [SKAction performSelector:@selector(spawnDebris6) onTarget:self],
                                         ]]];

    if (_dead == YES) {
        [self removeAllActions];
    }

    if (debris6.position.y > 568) {
        [self removeFromParent];
    }
}

每個NSMutableArrays都會隨着時間出現-第一個出現在0s,2 @ 10s,3 @ 40s,4 @ 80s等。當出現一個新的NSMutableArrays時,我添加了代碼,使以前的出現頻率降低,並且將其刪除一些(降低幀速率),但我仍然注意到約90秒后幀速率降低了。

我不明白為什么這會影響幀速率,因為我已將粒子的出生率和壽命降到最低,並努力刪除並減慢了碎片隨時間的生成速度。 為什么FPS速率緩慢貶值?

如果需要更多信息,請告訴我,我將更新此帖子。

我有一個類似的問題。 可能是SKEmitterNodes。 繼續與他們一起玩耍,降低出生率和壽命,甚至降低范圍等等。如果問題仍然存在,請查看是否可以將它們取出。 它可能看起來不那么好,但是有時您必須犧牲對功能的外觀。 另外,我建議您最好讓碎片出現在不同的時間和高度,這樣您就可以擁有全屏顯示,而且運行畫面也很流暢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM