私はLocationNodesとしてサブクラス化された最大20のノードを同時に画面上で回転させるゲームを設計しています。しかし、次の関数を呼び出すと、CPU使用率が100%になりアプリがクラッシュします。これはlocationPositions配列に格納されているノード上でスピンを呼び出しspinLocations()関数で、次のとおりです。サブクラスLocationNodeでノードアクションをサブクラス化する際のCPU使用率を100%にする
func spinLocations() {
for (key, val) in locationPositions {
let locationNode = fgNode.atPoint(val) as? LocationNode
let finalLocation = generateRandomLocation()
locationNode?.spin(locationNode!, position: generateRandomLocation(), finalPosition: finalLocation)
locationPositions[key] = finalLocation
}
}
、スピン関数は次のようになります。
func spin(_ locationNode: LocationNode, position: CGPoint, finalPosition: CGPoint) {
self.run(SKAction.sequence([SKAction.wait(forDuration: 3.0), SKAction.move(to: position, duration: 3.0), SKAction.move(to: finalPosition, duration: 3.0)]))
}
どのようにすることができます私はこれを書き換えるので、クラッシュしませんか?
あなたはどのくらいの頻度ですが電話をかける?追加や追加を続けてメモリを使い果たしてしまうような気がします。 – Knight0fDragon
@amalfilemons 'spin()'メソッドでは 'locationNode'パラメータは必要ありません。あなたはそれを使用しません。この場合の位置ノードは「自己」と同じです。 – Whirlwind
@ Knight0fDragonこれは最も近い答えでした。トレースを実行したところ、テクスチャがメモリを占有しているわけではありませんでしたが、アクション自体がメモリを消費する無限ループを引き起こす別の機能を引き起こしていました。 – illuminatedtype