SKPhysicsBody提高了CPU使用率

时间:2017-01-09 01:03:14

标签: swift sprite-kit

我刚刚完成了基于物理学的游戏。我注意到Xcode说能量影响是“非常高”,这是有道理的,因为CPU使用率约为21-26%。 (我在发布配置中使用了iPhone 6,而不是模拟器)我想出问题似乎在哪里是每个节点的SKPhysicsBody。当我注释掉物理主体的初始化时,cpu使用率下降到4-7%,能量影响读数为“低”。有人可以给我一些关于该做什么的见解吗?

class Item:SKSpriteNode {

var id:[Int]

init(type: String, ID: [Int]) {
    self.id = ID
    var newTexture = SKTexture(imageNamed: type)
    super.init(texture: newTexture, color: UIColor(), size: newTexture.size())
    self.name = type
    setPhysicsBody()
}

required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }


func setPhysicsBody() {
    physicsBody = SKPhysicsBody(circleOfRadius: 3)
    physicsBody?.isDynamic = false
    physicsBody?.categoryBitMask = bitMask.obstacleCategory
    physicsBody?.contactTestBitMask = bitMask.ballCategory
    physicsBody?.collisionBitMask = bitMask.ballCategory
    physicsBody?.restitution = 0.05
    physicsBody?.friction = 0.1
}

}

1 个答案:

答案 0 :(得分:0)

您可以通过设置SKPhysicsBody的{​​{1}}和contactTestBitMask来帮助减轻CPU负担。默认情况下,CPU会跟踪每个物理主体及其与所有其他物理主体的关系。通过设置collisionBitMaskcontactTestBitMask,您可以告诉CPU只需要担心物理主体需要与之交互的对象。