swift - SKPhysicsBody 提高 CPU 使用率

标签 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
}

}

最佳答案

您可以通过设置 SKPhysicsBodycontactTestBitMaskcollisionBitMask 来帮助减轻 CPU 负载。默认情况下,CPU 会跟踪每个物理体及其与所有 其他物理体的关系。通过设置 contactTestBitMaskcollisionBitMask,您可以告诉 CPU 只关心您需要物理体与之交互的对象。

关于swift - SKPhysicsBody 提高 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539637/

相关文章:

ios - 索引到函数数组 : Expression resolves to an unused l-value

ios - Swift - 使用 alamofire 发布请求

ios - SpriteKit SKTexture mipmap 不起作用

ios - didBecomeActive 取消暂停游戏

swift - 如何禁用两个 SKSpriteNode 之间的接触?

ios - Swift:通过深度链接到 Twitter 应用程序将图像共享到 Twitter

ios - 在 Swift 中使用 arc4random_uniform 从数组中提取随机字符串

iOS Swift Today 扩展 : import class from container app?

swift - 在 didMove 中调用带参数的函数

ios - 基于体积的 physicsBody 被手动移动而不接触基于边缘的 physicsBody