ios - SpriteKit Swift 节点数问题

标签 ios swift sprite-kit skshapenode

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

最佳答案

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

由于显而易见的原因,

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

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

请注意,就性能而言,绘图 channel 比节点数量重要得多。如果场景渲染所需的绘图遍数较低,SpriteKit 可以以 60fps 的速度渲染数百个节点。

关于ios - SpriteKit Swift 节点数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609799/

相关文章:

IOS键盘默认按钮翻译

ios - 将 Subview 传递给子类 UIView

ios - 在点击 UILabel(手势识别器)时,在一个单元格的 tableview 原型(prototype)单元格中找到 nil 并且它在另外两个单元格中工作正常

ios - Swift 项目中的 SignalR-ObjC

ios - 如何在 sprite Kit 场景中更改重力源

ios - SKPhysicsJoint 删除节点之间的连接线

ios - 如何检查用户是否已从设置中启用推送通知?

ios - 一个 View Controller 中的自定义导航栏更改

ios - Swift 不识别这个特定的 Objective-C 类构造函数

swift - 如何使用 SpriteKit 与已创建的 SKSpriteNode 创建碰撞?