我正在创建一个带有平铺地图的SpriteKit游戏.每个图块都是SKSprite节点.当我有大约800个瓷砖时,没有问题.但是如果我尝试将地图的大小增加到大约2000个区块,我的FPS将从60增加到20.屏幕上的区块节点数量不会改变(大约80),只是屏幕外的节点数量.任何可能导致这种情况的想法,或者如何解决这个问题?
似乎没有定义的最大节点数.这实际上取决于设备上可用的可用内存量.例如,请考虑以下代码:
int NODE_LIMIT = 375000
....
for (int i = 0; i<NODE_LIMIT; i++) {
SKNode *node = [SKNode node];
[self addChild:node];
}
Run Code Online (Sandbox Code Playgroud)
我可以在我的精灵工具包游戏中创建375000个节点.但随着我增加数量,我的设备内存不足.设备上的可用内存量会因许多因素而异.正如评论中所提到的,帧速率减慢的原因是因为物理模拟甚至可以在屏幕上看不到的节点上运行.
为了保持较高的帧速率,摆脱不可见的物理体,或者不需要每帧模拟的物理体.你可以通过只在它们位于屏幕的可视部分时添加精灵/物理体,并在它们不存在时删除它们来实现.
| 归档时间: |
|
| 查看次数: |
3236 次 |
| 最近记录: |