我正在使用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?
App已在iPhone 5上测试过。
答案 0 :(得分:2)
如何不在物理机构中使用这么多精灵?
千分之一肯定是几百个,特别是如果它们都在屏幕上并且如果许多机构产生接触事件(即堆叠时)。虽然在这种情况下它们都是静态的,所以它们不应该生成联系事件。这仍然会留下很多精灵。在所有或大多数节点上执行的任何代码都会使事情变得更糟。仅供参考,我在屏幕上绘制了大约400个精灵的应用程序,在滚动时更新它们并运行自定义游戏逻辑 - 这个应用程序在iPod touch 5G上几乎不能达到60 fps。
此外,请务必测试设备的性能。模拟器不能用于评估性能。
答案 1 :(得分:0)
我建议使用一个使用精灵表映射的系统,如果正确完成,可以节省大量资源。要搞定它有点棘手,但是精灵表的每个部分都可以设置为不同的对象,它们可以以不同的方式与你的精灵交互。祝你好运,如果你还在寻找解决这个问题的方法,我现在还在学习Tiled with SpriteKit,但这似乎很有希望。
http://www.raywenderlich.com/62049/sprite-kit-tutorial-make-platform-game-like-super-mario-brothers-part-1 - 教程解释使用Tiled with SpriteKit
http://www.mapeditor.org - 平铺网站