SpriteKit Swift节点计数问题

时间:2015-07-24 11:47:48

标签: ios swift sprite-kit skshapenode

模拟器显示节点计数,即有2个节点。但那是为什么呢?因为只有一个变量(球)。有没有办法创建一个圆而不是节点的两倍。

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)
}

1 个答案:

答案 0 :(得分:2)

这是因为设置了SKShapeNode fillColor。显然,当设置fillColorstrokeColor时,每个都需要额外的节点和额外的绘图传递。默认情况下,已经设置了strokeColor(一个节点,一个绘制过程),并且由于另外设置了fillColor,因此需要两个节点(和两个绘图过程)来渲染形状。

由于显而易见的原因,

SKShapeNode在很多情况下不是一个高效的解决方案。一个SKShapeNode需要至少一次绘制调用。有一些与此主题相关的有趣帖子,例如此one或此one

但是,如果IMO不是唯一的解决方案,那么应该避免使用SKShapeNode。只是因为性能原因。在你的情况下,如果你想要有许多不同类型的球,性能解决方案将是使用纹理图集和SKSpriteNode来表示这些纹理。通过这种方式,您可以在单次绘制过程中渲染任意数量的球。

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