在Swift/SpriteKit中获取确切的节点数和性能问题

Sam*_*Sam 1 frame-rate sprite-kit swift

我正在与SpriteKit进行我的第一场比赛,其中敌人从一侧进入屏幕并在另一侧通过屏幕.我注意到在游戏后期,当不同类型的敌人被渲染时,FPS下降并且CPU使用率接近100%(~95-99%).我想知道是否有办法在场景上获得精确的节点数(不仅仅是在屏幕上呈现的节点),以告诉我是否没有正确删除它们.我已经有一个全局节点计数器,我更新它似乎正常工作 - 总节点数​​通常是一致的.还有其他事情我可以尝试和调试吗?谢谢!

Luc*_*tti 6

您还可以创建一个扩展,SKNode以从当前节点开始计算子树中的所有节点.

extension SKNode {
    func subtreeCount() -> Int {
        return children.reduce(1) { $0 + $1.subtreeCount() }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在你的场景里面写一下

let totalNodes = subtreeCount()
Run Code Online (Sandbox Code Playgroud)