我有一个使用Sprite-Kit和Swift的游戏,其中我从屏幕顶部到屏幕底部生成随机圆圈。FPS下降和游戏变慢 - Sprite-Kit和Swift
启动游戏时,它在开始时运行得非常好(大约60 FPS或更低),但随后FPS逐渐下降,游戏变得非常缓慢......我不明白为什么FPS会随着时间而下降(节点数保持在8-10左右,所以当它们离开屏幕时它们会被移除) - 我在iOS模拟器和实际设备上测试了它,有什么想法?
我检查过,问题不是来自内存泄漏。另外,我只使用一个视图控制器。
,我认为可能会导致这个问题是这样的,但我不知道为什么,唯一的功能:
/* Function to generate single random circle */
func generateCircle() -> Void {
let circleSize:CGFloat = CGFloat(arc4random_uniform(40) + 3)
let xPosition:CGFloat = CGFloat(arc4random_uniform(UInt32(size.width)))
var randomCircle = SKShapeNode(circleOfRadius: circleSize)
randomCircle.strokeColor = SKColor.redColor()
randomCircle.fillColor = SKColor.redColor()
randomCircle.physicsBody = SKPhysicsBody(circleOfRadius: circleSize)
randomCircle.physicsBody?.dynamic = false
randomCircle.position = CGPoint(x: xPosition, y: size.height + circleSize*2)
randomCircle.physicsBody?.dynamic = true
randomCircle.physicsBody?.categoryBitMask = randomCirclesGroup
addChild(randomCircle)
}
你可能在游戏中使用了多个UIVIewControllers?从以往的经验来看,这会导致糟糕的表现 – Bokoskokos
节点数只考虑正在绘制的节点。离屏节点不计算在内,但可能仍然在层次结构中。但是因为他们没有画出来。无论如何,这可能有很多原因,并且需要一些你至少怀疑或者更好的代码:已经测得性能很差。一个非常常见的初学者的错误是创建太多的节点或实体,可能每次都应该改变某些东西,而不是仅仅改变它们的属性。但是这是一炮打响。开始删除代码,直到您发现性能明显更好,然后在此处发布该代码(其具有性能影响)。 – LearnCocos2D
@ LearnCocos2D谢谢,我发布了一些代码,我认为这可能是问题(当我生成下降的圆时,它可能会减慢) – sachalondon