【问题标题】:SpriteKit Swift Node Count issuesSpriteKit Swift 节点计数问题
【发布时间】:2015-07-24 11:47:48
【问题描述】:

模拟器显示节点数,即有 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)
}

【问题讨论】:

    标签: ios swift sprite-kit skshapenode


    【解决方案1】:

    这是因为设置了 SKShapeNode fillColor。显然,当设置了fillColorstrokeColor 时,它们中的每一个都需要额外的节点和额外的draw pass。默认情况下,已经设置了 strokeColor(一个节点,一个绘制通道),并且由于另外设置了fillColor,因此需要两个节点(和两个绘制通道)才能渲染形状。

    SKShapeNode 在很多情况下并不是一个高效的解决方案,原因很明显。一个SKShapeNode 至少需要一个draw call。有一些与此主题相关的有趣帖子,例如 oneone

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多