Tôi đang làm việc trên trò chơi sprite-kit nơi các nút xuất hiện bên dưới điểm thấp nhất trên màn hình và lực hấp dẫn được đặt để chúng trôi nổi lên đầu màn hình. Tất cả mọi thứ hoạt động hoàn hảo, nhưng nó nhanh chóng bắt đầu làm chậm FPS, và cuối cùng chậm và ổn định trở nên rất chậm. Tôi nghĩ cách để giải quyết này có thể đã được loại bỏ các nút từ phụ huynh sau khi họ muốn qua một điểm, đây là đoạn code tôi sử dụng trong bản cập nhật:Làm thế nào để loại bỏ đúng nút khi ra khỏi giới hạn màn hình?
-(void)update:(CFTimeInterval)currentTime {
if (_bubble1.position.y > CGRectGetMaxX(self.frame)+40) {
[self removeFromParent];
}
}
Và trong trường hợp nó là cần thiết, điều này là làm thế nào tôi sinh ra cho biết bong bóng dưới initWithSize
phương pháp:
-(void)didMoveToView:(SKView *)view {
[self performSelector:@selector(spawnBubbles) withObject:nil afterDelay:1.0];
[self performSelector:@selector(spawnBubbles1) withObject:nil afterDelay:1.5];
}
-(void)spawnBubbles {
randomPosition = arc4random() %260*DoubleIfIpad;
randomPosition = randomPosition + 20*DoubleIfIpad;
randomNumber = arc4random() %7;
randomNumber = randomNumber + 1;
myColorArray = [[NSArray alloc] initWithObjects:colorCombo1, colorCombo2, colorCombo3, colorCombo4, colorCombo5, colorCombo6, colorCombo7, colorCombo8, nil];
myRandomColor = [myColorArray objectAtIndex:randomNumber];
_bubble1 = [SKShapeNode node];
[_bubble1 setPath:CGPathCreateWithEllipseInRect(CGRectMake(-25*DoubleIfIpad, -25*DoubleIfIpad, 50*DoubleIfIpad, 50*DoubleIfIpad), nil)];
_bubble1.strokeColor = _bubble1.fillColor = myRandomColor;
_bubble1.position = CGPointMake(randomPosition, CGRectGetMinY(self.frame)-60);
_bubble1.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:20];
_bubble1.physicsBody.categoryBitMask = CollisionBubble;
[self addChild:_bubble1];
[self runAction:[SKAction sequence:@[
[SKAction waitForDuration:1.0],
[SKAction performSelector:@selector(spawnBubbles) onTarget:self],
]]];
}
làm thế nào tôi có thể làm cho nó để các nút được xử lý đúng cách khi họ rời khỏi màn hình? Và làm thế nào tôi có thể giữ FPS với tốc độ không đổi 60 FPS?
Cảm ơn trước !!
"FPS" chỉ lỏng lẻo liên quan đến số nút. các yếu tố khác sẽ đóng góp cho điều này nhiều hơn. –
Thực sự ?! giống như những gì @BradAllred – user3576196
Bạn chỉ có một bong bóng ivar, bạn sẽ cần phải sử dụng một mảng để truy cập tất cả chúng sau này. Với mã cập nhật của bạn, bạn chỉ có thể xóa bong bóng đã được tạo cuối cùng. Dễ dàng hơn bạn có thể có mỗi bong bóng chạy một hành động tùy chỉnh thường xuyên kiểm tra vị trí của nó và gọi removeFromParent khi cần thiết. – LearnCocos2D