SKShapeNode消耗太多内存并减慢动画-Spritekit iOS

Shi*_*hah 2 ios sprite-kit skshapenode

我正在使用SKShapeNode创建一个类似山的对象.我使用CGMutablePathRef来指向我的路径

SKShapeNode *shapenode = [[SKShapeNode alloc] init];

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
......
for (int i = 0; i < [refData count];i++) {


    CGPathAddLineToPoint(path, NULL, ((float)i/[refData count])*screenWidthBoundry,      [[refData objectAtIndex:i] doubleValue]);
}


CGPathAddLineToPoint(path, NULL, screenWidthBoundry, 0);
CGPathAddLineToPoint(path, NULL, 0, 0);

shapenode.path = path;
shapenode.antialiased = YES;
shapenode.fillColor = [SKColor colorWithRed:17.0/255.0 green:108.0/255.0 blue:125.0/255.0 alpha:1.0];
//shapenode.strokeColor = [UIColor clearColor];

shapenode.lineWidth = 1.0f;

shapenode.physicsBody = [SKPhysicsBody bodyWithEdgeChainFromPath:path];

shapenode.physicsBody.affectedByGravity = NO;
shapenode.physicsBody.categoryBitMask = CollisionTypeMountain;
shapenode.physicsBody.collisionBitMask = 0;
shapenode.physicsBody.contactTestBitMask = CollisionTypeBird;

CGPathRelease(path);
return shapenode;
Run Code Online (Sandbox Code Playgroud)

我的问题是SkShapeNode正在减慢iPhone 4上的动画速度(在iPad和iPhone 5上平稳运行但仍然不是60 fps)并消耗大量内存.我可以缓存skshapnode对象以顺利运行动画吗?任何帮助表示赞赏!!

Iva*_*sko 7

我遇到了同样的问题,SKShapeNodes占用了太多的cpu资源并导致帧率下降.使用SKView的textureFromNode:方法创建SKTexture.现在创建一个SKSpriteNode,其中包含生成视图的SKTexture.这将解决您的性能问题.

从SKShapeNode创建SKTexture