2017-01-09 23 views
1

私はちょうど物理学に基づいたゲームをやっています。私はXcodeがエネルギー使用量が「非常に高い」と言っていることに気付きました。CPU使用量が約21-26%であるため意味があります。 (私はリリース構成ではなく、シミュレータではiPhone 6を使用しています)問題がどこにあるかはわかりました。各ノードのSKPhysicsBodyです。物理系の初期化をコメントアウトすると、CPU使用率は4〜7%に低下し、エネルギーインパクトは「低」となります。誰かが私に何をすべきかについていくつかの洞察を与えることができますか?SKPhysicsBodyがCPU使用率を上げる

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

これはかなり予想される動作です。物理学の機関(実際にはすべてのゲーム)を利用するゲームについては、システムに課税されます。物理学に戻り、すべての複素積分をマイクロ秒単位で計算します。本当に、私はあなたが完全に正常な何かを強調していると思います。 – Pierce

+0

再利用できる新しいノードを迅速に作成していますか?そうでなければ、これは予想される動作であり、CPUはフレームごとに各ノードの物理を計算しなければならない。 –

+0

@Pierce Oh ok、ちょうど約5または6のノードがたくさん生成されていません。ありがとうございました – Muffinman2497

答えて

0

あなたが設定することで、CPUの負荷を軽減することができますSKPhysicsBodycontactTestBitMaskcollisionBitMask。デフォルトでは、CPUはそれぞれのフィジックスボディとその関係をすべて他のフィジックスボディに追跡しています。 contactTestBitMaskcollisionBitMaskを設定することで、Physics Bodyに対話する必要があるオブジェクトだけをCPUが意識するように指示できます。