如果我将更新功能留空,为什么我的更新功能会占用85%的时间?

问题描述 投票:1回答:1

在分析我的应用程序时,我有点困惑。我注意到,随着CPU使用量的增加,我不知道为什么。即使玩家闲置,似乎有72%的CPU使用率似乎来自[SKScene _update:]我的更新功能是空白的,因为我的游戏是基于回合的,所以为什么会有这么多的进展?

任何提示将不胜感激。

enter image description here

如果需要说,这是我的更新方法:

override func update(_ currentTime: TimeInterval) {
    // Called before each frame is rendered
}

附加信息:

主游戏地图是基于十六进制的SKTileMapNode,其中使用SKCameraNode绘制的UI。用户界面由大约30个节点组成,包括SKLabelNodeSKSpriteNode每次用户结束时,都有一个AI在一个单独的线程上运行。当AI运行时,主线程CPU使用率会立即下降,如上图所示。这很奇怪,因为AI只运行GKMinMaxStrategist bestMoveForPlayer()函数。

swift sprite-kit instruments swift4 skscene
1个回答
1
投票

你可能会手动调用update(_:),它再次调用update(_:),你应该重写这个方法来更新场景,即使你有一个空的实现。确保您已设置场景的SKSceneDelegate

不要直接调用此方法;每帧只调用一次,只要场景在视图中呈现并且不暂停。默认情况下,此方法不执行任何操作您的场景子类应覆盖此方法并对场景执行任何必要的更新。

您也可以手动暂停/恢复视图:

 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    guard let view = view else {
        return
    }

    view.paused = !view.paused
}
© www.soinside.com 2019 - 2024. All rights reserved.