我正在开发一个sprite-kit游戏,其中节点在屏幕的最低点下方生成,重力设置为让它们浮动到屏幕顶部.一切都很完美,但它很快就开始减慢FPS,最终滞后和故障变得非常缓慢.我认为解决这个问题的方法是在经过一个点之后从父节点中删除节点,这是我在更新中使用的代码:
-(void)update:(CFTimeInterval)currentTime {
if (_bubble1.position.y > CGRectGetMaxX(self.frame)+40) {
[self removeFromParent];
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要,这就是我在initWithSize方法下面产生气泡的方法:
-(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 …Run Code Online (Sandbox Code Playgroud)