计时器栏使用比例SKAction,可怕的SpriteKit渲染性能

Con*_*sed 5 performance ios sprite-kit skaction skspritenode

我在做什么,我认为,这是一个非常简单的计时器栏,屏幕上没有别的东西.然而,这在iPad Pro上无法保持60fps ......我做的事情显然是重而错吗?

let previewTime: TimeInterval = 3.0

func timerBar(){

    let tbW: CGFloat = frame.size.width / 2
    let tbH: CGFloat = 64
    let tbSize = CGSize(width: tbW, height: tbH)

    let timerBox = SKSpriteNode(color: SKColor.black, size: tbSize)
    timerBox.anchorPoint = CGPoint(x: 0.0, y: 0.0)
    timerBox.position = CGPoint(x: frame.size.width / 2 - (tbW / 2), y: 500)
    timerBox.zPosition = 8
    addChild(timerBox)

    let timerBoxBar = SKSpriteNode(color: .white, size: tbSize)
        timerBoxBar.anchorPoint = CGPoint(x: 0.0, y: 0.0)
        timerBoxBar.position.x = 0.0
        timerBoxBar.position.y = 0.0
        timerBoxBar.xScale = 0.0
    timerBox.addChild(timerBoxBar)

    let animPreviewTime = SKAction.scaleX(to: 1, duration: GameScene.previewTime)
    timerBoxBar.run(animPreviewTime){self.randomisePositions()}
}
Run Code Online (Sandbox Code Playgroud)

这使得计时器栏具有黑色背景和白色计时器栏,在屏幕上动画3秒,直到计时器栏已满.

它明显地结结巴巴,并且仪器使用渲染的蓝色瞬间显示它,足以使它一直变得口吃.

更新

这是渲染过程中的尖峰,正如你所看到的,时间条动画的任一侧,绝对发生的事情正在发生:

在此输入图像描述

Xcode版本8.2 beta(8C23)

iOS 10.2 Beta 2

现在正在下载iOS 10.2 beta 3 ...