SKScene:Move&调整调试字段的大小

时间:2016-03-26 20:52:16

标签: ios sprite-kit

我在场景中启用了调试字段,例如:

skView.showsFPS = YES;
skView.showsNodeCount  YES;

不幸的是,位置,大小和文本颜色对我的场景不起作用,调试文本很难阅读。我想将它们移出右下角,理想情况下,让它们更大。我想也许他们是子节点或子视图,所以我尝试了以下,但两个检查都是空的。

-(void)didMoveToView:(SKView *)view
{
    NSArray *subViews = [view subviews];
    for (UIView *subView in subViews)
    {
        NSLog(@"Node at %.0f,%.0f", subView.frame.origin.x, subView.frame.origin.y);
    }

    [self enumerateChildNodesWithName:@"*" usingBlock:^(SKNode * _Nonnull node, BOOL * _Nonnull stop)
    {
        NSLog(@"Node at %.0f,%.0f", node.position.x, node.position.y);
    }];

}

有没有办法访问场景的调试文本以移动或调整它们的大小?使用私有API会没问题,因为这只适用于预发布测试期间,并且会在发货前删除。

1 个答案:

答案 0 :(得分:0)

没有公共属性允许这些标签的样式或居中。但这并不是什么大不了的......那些标签只显示绘制,节点和四重奏。就是这样。此外,调试区域的高度约为15个点。如果你需要启用调试信息,我会说这不是很多。

它也放在屏幕的底部......所以,这样的东西可能很有用:

import SpriteKit

class GameScene: SKScene {

    override func didMoveToView(view: SKView) {

        backgroundColor = .whiteColor()

        let debugAreaBackground = SKSpriteNode(color: .blackColor(), size: CGSize(width: frame.size.width, height: 15))

        debugAreaBackground.position = CGPoint(x: frame.midX, y: debugAreaBackground.size.height/2.0)
        debugAreaBackground.alpha = 0.5
        addChild(debugAreaBackground)

    }
}

我们这里有一个白色背景,所以调试信息将是"隐形"由于调试标签使用的字体是白色的。因此添加一个高度仅为15点的黑色背景节点将解决问题。使该节点透明可以让您查看此背景节点背后的场景内容。

此外,您可以以编程方式获取节点数,并且可以禁用该信息并将自己的标签放在其他位置。要获得节点计数,您可以计算子数组。要获取树中的所有节点(可见和屏幕外),您可以使用enumerateChildNodesWithName方法并将类似的内容传递为搜索字符串:

//*

了解更多here