【问题标题】:skshapenode adding two nodes?skshapenode 添加两个节点?
【发布时间】:2015-07-29 11:51:17
【问题描述】:

我不确定实现或我使用它的方式是否存在问题。

但是,当它应该是 ~ 1,250 时,它显示了超过 2,400 个节点

-(void)drawWeb  {
    //get distance of 50 across

    int distanceMargin = _background.frame.size.width/50;

    NSLog(@"%i", distanceMargin);

    __block int xCounter = distanceMargin;
    __block int yCounter = 0;

    NSArray *alphabet = [[NSArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];

    for (int i = 0; i < 25; i++) {

        for (int j = 0; j < 50; j++) {
            webPoint *shape = [webPoint shapeNodeWithCircleOfRadius:1];
            shape.position = CGPointMake(xCounter, _background.frame.size.height - yCounter);
            shape.fillColor = [UIColor blackColor];
            shape.alpha = 1;
            shape.webPoint = [NSString stringWithFormat:@"%@%i", alphabet[i], j];
            shape.positionX = xCounter;
            shape.positionY = yCounter;
            shape.name = @"webPoint";
            [_background addChild:shape];

            xCounter = xCounter + distanceMargin;
        }

        xCounter = distanceMargin;

        yCounter = yCounter + distanceMargin;
    }
}

【问题讨论】:

    标签: ios objective-c sprite-kit skshapenode


    【解决方案1】:

    默认情况下,创建 SKShapeNode 时,strokeColor 已设置,并且需要 1 个节点 + 1 个绘制调用。在您的示例中,您也设置了fillColor,这需要附加节点和附加绘制通道

    SKShapeNode 在许多情况下不是高效的解决方案(应该谨慎使用),在您的情况下,如果您启用调试标签,您可能会看到场景渲染需要大量的绘制调用。可以在视图控制器中启用调试标签 (showsDrawCount = YES)

    Draw 调用直接影响 SpriteKit 应用程序的性能,你应该尽量保持这个数字尽可能低。一种方法是使用SKSpriteNode 和纹理图集。

    【讨论】:

    • 我使用 shapenode 纯粹是为了学习航路点和路径制作,所以我有一个视觉辅助工具。但是,感谢您向我指出更好的性能方法。所以基本上没有问题,只是 shapenode 需要创建许多节点。
    • @Daniel SKShapeNode 的主要目的之一实际上是调试。这可以在文档中找到。但是因为 SKShapeNode 不能像 SKSpriteNode 那样批量渲染,所以它们的使用受限于性能。请注意,在性能方面,节点计数并不重要,因为绘制计数。如果绘制次数保持较低,SpriteKit 可以以 60fps 的速度渲染数百个节点。
    • 非常感谢,我不知道这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多