模拟器显示节点数,即有2个节点。但是为什么呢?由于只有一个var(ball)。有没有一种方法可以创建一个圆而不使它成为两个节点。
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) }
这是因为fillColor设置了SKShapeNode 。显然,设置fillColor或时strokeColor,它们每个都需要附加的节点和附加的绘制过程。默认情况下,已经设置了strokeColor(一个节点,一个绘制过程),并且由于fillColor另外设置了,因此要渲染形状需要两个节点(和两个绘制过程)。
fillColor
strokeColor
SKShapeNode由于明显的原因,在很多情况下,它并不是一种高效的解决方案。一个SKShapeNode需要至少一个抽奖。有此主题相关的一些有趣的帖子,例如这一个或这一个。
SKShapeNode
但是,SKShapeNode即使不是唯一的解决方案,也应避免使用IMO 。仅出于性能原因。在您的情况下,例如,如果您想拥有许多不同种类的球,那么高性能的解决方案将是使用纹理图集并SKSpriteNode表示这些纹理。这样,您可以在单次绘制过程中根据需要渲染尽可能多的球。
SKSpriteNode
请注意,在性能方面,绘制过程比节点数更为重要。如果场景渲染所需的绘制通过量很少,则SpriteKit可以以60fps的速度渲染数百个节点。