ios - 大 SKSpriteNode 导致帧率下降

标签 ios swift sprite-kit

我正在使用相当大的 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/

相关文章:

ios - skemitternode 与 skspritenode 的碰撞

ios - 为什么我总是必须将 Sprite 的位置更改为其他位置才能获得所需的工作位置

iphone - 通过脚本运行模拟器构建

ios - UITableViewCell 清除间距

ios - 如何在缩放后调整 UILabel 文本大小 UIScrollview Zoomable

objective-c - 指定没有动画变化的随机粒子起始颜色?

iphone - 如何在 iOS 设备上绘制波浪线

ios - Swift:UICollectionViewCell didSelectItemAtIndexPath 改变背景颜色

来自自定义类的 Swift addChild

ios - 如何将文件存储在使用 “documentDirectory” swift 创建的文件夹中