ios - SpriteKit 最大节点数

标签 ios sprite-kit

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

最佳答案

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

int NODE_LIMIT = 375000
....

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

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

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

关于ios - SpriteKit 最大节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19411031/

相关文章:

iphone - 从 iPhone 应用程序发推文

ios - swift 3 : expression pattern of type 'Int' cannot match values of type 'UnsafeMutableRawPointer'

ios - 在 sprite 上启用触摸(spritekit)

ios - SpriteKit 纹理 "scaling"彼此不同

ios - 了解 Xcode 中的图像大小

ios - 使用 Alamofire 和 Swift 4 上传图片时出现问题

ios - iOS 中的 SQLite 数据库修改和应用程序更新

ios - 将屏幕拆分为两个 View Controller SpriteKit + Swift

ios - 以正确的方式上传/下载多张图片?

ios - 在 spriteKit 上淡出