这是最简单的动画:一个黑洞在屏幕中间旋转。这两行代码将cpu使用率从3%提高到31%,能量影响从低到高(有时甚至非常高):
let actionLoop = SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat(360), duration: 1000)) hole.run(actionLoop)
这正常吗?我读过多少类似的讨论,但没有找到明确的答案。下面是整个代码和屏幕:
import SpriteKit import GameplayKit class GameScene: SKScene { // Basic for dynamic sizes step01 var width = CGFloat() var height = CGFloat() override func didMove(to view: SKView) { // Basic for dynamic sizes step02 width = self.frame.size.width height = self.frame.size.height // test background color self.backgroundColor = .yellow // set blackhole let hole = SKSpriteNode(imageNamed: "blackhole") let startPosition = CGPoint(x: 0, y: 0) hole.size = CGSize(width: width/8, height: width/8) hole.position = CGPoint(x: startPosition.x, y: startPosition.y) let actionLoop = SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat(360), duration: 1000)) hole.run(actionLoop) self.addChild(hole) }
}
您的代码做了一些可能会影响效率的事情。
第一, SKAction 旋转角度以弧度计算(对于 360 度应该是 2*PI 6.28 ,不是 360度 ). 现在,你的代码做了很多计算来“过度旋转”精灵,这是浪费。更好的说法是:
SKAction
360
2*PI
6.28
360度
SKAction.rotate(byAngle: CGFloat.pi*2, duration: 1000)