SpriteKit Swift节点计数问题

3
模拟器显示有两个节点,但为什么呢?因为只有一个名为 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)
}
1个回答

2
这种情况是因为设置了fillColor,显然,当设置了fillColorstrokeColor时,每个颜色都需要一个额外的节点和附加的绘制过程。默认情况下已经设置了strokeColor(一个节点,一个绘制过程),并且由于另外设置了fillColor,所以需要两个节点(和两个绘制过程)才能呈现形状。
在许多情况下,SKShapeNode不是性能良好的解决方案,因为这是很明显的。一个SKShapeNode至少需要一次绘制调用。关于这个主题有一些有趣的文章,例如这篇文章或这篇文章
但是,在我看来,如果不是唯一的解决方案,应避免使用SKShapeNode,仅仅出于性能原因。在你的情况下,如果想要有许多不同类型的球,可采用纹理图集和SKSpriteNode来表示这些纹理的高效解决方案。这样,您可以在单个绘制调用中呈现尽可能多的球。
请注意,当涉及到性能时,绘制过程比节点数量更重要。如果场景渲染所需的绘制次数较低,SpriteKit可以在60fps下渲染数百个节点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接