SpriteKit Swift节点计数问题

模拟器显示节点数,有2个节点。 但为什么呢? 因为只有一个var(球)。 有没有办法创build一个圆圈,而不是双节点。

class GameScene: SKScene { var ball = SKShapeNode(circleOfRadius: 50) override func didMoveToView(view: SKView) { ball.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2) ball.fillColor = SKColor.blackColor() self.addChild(ball) } 

这是因为SKShapeNode fillColor被设置。 显然,当fillColorstrokeColor被设置时,它们每个都需要额外的节点和附加的绘制过程。 默认情况下已经有strokeColor设置(一个节点,一个绘制过程),并且由于fillColor被另外设置,所以要呈现的形状需要两个节点(和两个绘图过程)。

由于显而易见的原因, SKShapeNode在很多情况下并不是一个高性能的解决scheme。 一个SKShapeNode需要至less一个绘制调用。 有一些有趣的post与这个话题有关,例如这个或这个。

但是,如果不是唯一的解决scheme, SKShapeNode应该避免使用SKShapeNode 。 仅仅是因为性能的原因。 在你的情况下,如果你想要有许多不同types的球,性能的解决scheme将是使用纹理地图集和SKSpriteNode来表示这些纹理。 通过这种方式,您可以在单次通过中渲染尽可能多的球。

请注意,在性能方面,绘制过程比节点的数量重要得多。 如果场景渲染所需的绘图次数较less,则SpriteKit可以以60fps渲染数百个节点。