我正在使用相当大的 SpriteNodes 在 iOS Swift 中移动我的背景(其中包括)。
let runningBar = SKSpriteNode(imageNamed: "Bar")
self.addChild(self.scoreText)
它是这样移动的:
override func update(currentTime: NSTimeInterval) {
// Golf
updateRunningBarPosition()
}
func updateRunningBarPosition() {
runningBar.position.y = CGFloat(Double(runningBar.position.y) + createSinWave(angle) * 1)
self.angle += 0.01
}
这会导致帧速率从 60 fps 下降到大约 28-32。
如何防止这种情况发生?
最佳答案
如果图像资源非常大,你需要考虑它们上传到 gpu 和渲染所花费的时间,如果它们有 alpha 或任何其他效果应用于它们,并且你有相当多的图像 gpu 时间可以呈指数增长,你最终会遇到丢帧的情况。一个好的策略是问问自己是否真的需要这么大的图像开始,因为您可以通过平铺背景或使用可拉伸(stretch)渐变将工作分解成更小、更容易处理的 block ,或者分解大图像图像分成 4-10 个较小的 block 。
关于ios - 大 SKSpriteNode 导致帧率下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155057/