我即将完成一款基于物理学的游戏。我注意到 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
}
}
最佳答案
您可以通过设置 SKPhysicsBody
的 contactTestBitMask
和 collisionBitMask
来帮助减轻 CPU 负载。默认情况下,CPU 会跟踪每个物理体及其与所有 其他物理体的关系。通过设置 contactTestBitMask
和 collisionBitMask
,您可以告诉 CPU 只关心您需要物理体与之交互的对象。
关于swift - SKPhysicsBody 提高 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539637/