1

我正在使用 Sprite Kit 构建简单的游戏,其中关卡是由相同的矩形块构建的。但是当我添加很多块(即 1000)时,游戏变得非常慢(FPS 下降到 20)。这是我向场景添加块的方法:

-(void)drawLevel
{
    SKSpriteNode *shelf = [SKSpriteNode spriteNodeWithTexture:_initialLevel.earthBoxTexture];
    shelf.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:shelf.size];
    shelf.physicsBody.dynamic=NO;
    shelf.physicsBody.categoryBitMask = platformCategory;

    for (NSValue *positionValue in _initialLevel.boxPositions)
    {
        shelf.position = positionValue.CGPointValue;
        [_platformsNode addChild:[shelf copy]];
    }

    [_world addChild:_platformsNode];
}

_world 是主要场景的子对象。我创建“架子”一次,然后复制它。我应该怎么做才能获得好的 FPS?

应用程序在 iPhone 5 上进行了测试。

4

2 回答 2

2

不将这么多精灵与物理体一起使用怎么样?

一千肯定是几百太多,特别是如果它们都在屏幕上并且如果许多物体产生接触事件(即堆叠时)。尽管在这种情况下它们都是静态的,所以它们不应该产生联系事件。这仍然留下了许多要绘制的精灵。

在所有或大部分节点上执行的任何代码也会使事情变得更糟。仅供参考,我有一个应用程序在屏幕上绘制了大约 400 个精灵,在滚动时更新它们并运行自定义游戏逻辑 - 这个应用程序在 iPod touch 5G 上几乎不能达到 60 fps。

此外,请务必在设备上测试性能。模拟器不能用于评估性能。

于 2013-10-26T18:29:27.903 回答
0

我建议使用一个使用精灵表贴图的系统,如果操作正确,它将节省大量资源。把它写下来有点棘手,但是精灵表的每个部分都可以设置为不同的对象,这些对象可以以不同的方式与你的精灵交互。祝你好运,如果你还在寻找解决这个问题的方法,我自己还在用 SpriteKit 学习 Tiled,但它看起来很有希望。

http://www.raywenderlich.com/62049/sprite-kit-tutorial-make-platform-game-like-super-mario-brothers-part-1 - 解释使用 Tiled 和 SpriteKit 的教程

http://www.mapeditor.org - 平铺网站

于 2014-02-18T05:05:28.377 回答