SKShapeNode를 사용하여 산과 같은 오브젝트를 만듭니다. 나는SKShapeNode가 너무 많은 메모리를 소비하고 애니메이션 속도가 느려짐 -Spritekit iOS
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;
내 문제는 SkShapeNode이 (아직도 60 FPS를 iPad에서 원활하게 실행하고 아이폰 5 만) 아이폰 4에 애니메이션을 둔화와 메모리를 많이 소모되는 내 경로에 포인트를주고 CGMutablePathRef를 사용합니다. skshapnode 객체를 캐시하여 애니메이션을 원활하게 실행할 수 있습니까? 어떤 도움을 주셔서 감사합니다!
모양 노드는 무엇입니까? – sangony
@sangony 임의의 모양 .. 대략 200 포인트를 사용합니다. 노드처럼 산을 그립니다. –
자주 노드를 다시 만들면 어떤 노드에 있든 느려질 것입니다. SKShapeNode의 경우 특히 일괄 적으로 그려지지 않으며 디버깅 목적으로 존재하며 실제 게임 비주얼을 생성하지는 않습니다. 애플이 문서를 더 분명하게 보이기를 바란다. 마지막으로 iPhone 4는 차세대 iPhone 4S에 비해 훨씬 느린 장치입니다. 셰이더 성능은 단일 코어 만있는 CPU 성능뿐만 아니라 상당히 느립니다. 요즘 많은 게임에서 iPhone 4에서 게임을 원활하게 실행하는 것은 어려운 일입니다. – LearnCocos2D