7

我正在创建一个带有平铺地图的 SpriteKit 游戏。每个图块都是一个 SKSprite 节点。当我有大约 800 块瓷砖时,就没有问题了。但是如果我尝试将地图的大小增加到大约 2000 个图块,我的 FPS 会从 60 变为 20。屏幕上的图块节点的数量不会改变(大约 80),只是屏幕外的节点数。关于可能导致此问题的原因或如何解决的任何想法?

4

1 回答 1

6

似乎没有定义的最大节点数。这实际上取决于您设备上可用的可用内存量。例如考虑以下代码:

int NODE_LIMIT = 375000
....

    for (int i = 0; i<NODE_LIMIT; i++) {
        SKNode *node = [SKNode node];
        [self addChild:node];
    }

我可以在我的 sprite kit 游戏中创建 375000 个节点。但是当我增加上面的数字时,我的设备内存不足。设备上的可用内存量会因多种因素而异。正如评论中所提到的,您的帧速率变慢的原因是因为物理模拟即使对于屏幕上不可见的节点也会运行。

为了保持高帧率,去掉不可见的物理体,或者不需要每帧都模拟的物理体。您可以通过仅在精灵/物理实体位于屏幕可见部分时添加它们并在它们不在时移除它们来做到这一点。

于 2013-11-16T08:05:58.777 回答