Я строю простую игру с комплектом Sprite, в котором уровень построен из одинаковых прямоугольных блоков. Но когда я добавляю ко многим блокам (т. Е. 1000), игра становится очень медленной (FPS падает до 20). Вот как я добавляю блоки к сцене:Добавление такого же спрайта в SpriteKit
-(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.
Является ли это на устройстве или в симуляторе? Я думаю, что ответ дается правильно, но было бы полезно добавить эту информацию в вопрос. 20 кадров в секунду в симуляторе и 20 кадров в секунду на устройстве - очень разные ситуации. – prototypical
Для решения, использующего только один узел, см. Http://stackoverflow.com/a/37768928/763355 – MoDJ