我有一些代码可以从屏幕的右侧到左侧生成块,一旦它们退出屏幕,它们就会被删除"。
当我在Xcode 5S模拟器上运行游戏时,跟随存在:
Node Count = 156
FPS = 20 fps <---- I'm not to worry about this on the emulator since the actual iPhone is always much faster.
然而,当我在iPhone 5S上运行游戏时,存在以下情况:
Node Count = 315
FPS = between 55 and 60 fps
当帧数下降到55 fps时,我注意到我的游戏在真正的iPhone 5S上有些滞后....
似乎我用来生成块的代码产生了两倍的节点。但是我无法在物理上看到节点的两倍......但数字加起来。这是我用来生成块的代码。
let moveBlocks = SKAction.moveByX(-self.frame.size.width * 2, y: 0, duration: NSTimeInterval(self.frame.size.width / 40))
let unspawnBlock = SKAction.removeFromParent()
let sequence = SKAction.sequence([moveBlocks, unspawnBlock])
let p2 = SKShapeNode(rectOfSize: CGSize(width: blockSize, height: blockSize))
p2.fillColor = SKColor.blackColor()
p2.strokeColor = SKColor.blackColor()
p2.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: blockSize, height: blockSize))
p2.position = CGPoint(x: CGRectGetMidX(self.frame) + self.frame.size.width / 2, y: CGRectGetMidY(self.frame))
p2.physicsBody?.affectedByGravity = false
p2.physicsBody?.dynamic = true
p2.physicsBody?.friction = 0
p2.alpha = 1
p2.physicsBody?.categoryBitMask = PhysicsCategory.blocks
p2.physicsBody?.collisionBitMask = PhysicsCategory.None
p2.physicsBody?.contactTestBitMask = PhysicsCategory.player
self.addChild(p2)
p2.runAction(sequence)
如何减少滞后?
谢谢:)
答案 0 :(得分:0)
这可能与zPosition有一些问题以及方法removeFromParent()的错误用法。
1)对于第一个问题,它可能是你背后的一些节点(我想你已经拥有它)
2)第二个例子可能是您将一些对象添加到不同的图层但是您没有将此方法用于新图层,而是将其用作self.removeFromParent。
thatLayer.removeFromParent()
请检查这两个可能的问题。我的游戏也有同样的问题。