ios - SKScene : Move & resize debugging fields

标签 ios sprite-kit

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

skView.showsFPS = YES;
skView.showsNodeCount  YES;

不幸的是,位置、大小和文本颜色不适用于我的场景,而且调试文本很难阅读。我想将它们移出右下角,理想情况下,让它们变大。我想也许它们是子节点或 subview ,所以我尝试了以下操作,但两次检查都是空的。

-(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);
    }];

}

是否有任何方法可以访问场景的调试文本以移动或调整它们的大小?使用私有(private) API 会很好,因为这仅适用于预发布测试,并将在发布前删除。

最佳答案

没有允许这些标签的样式或居中的公共(public)属性。但这没什么大不了的……那些标签只显示绘图、节点和四边形计数。就是这样。此外,调试区域的高度约为 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 .

关于ios - SKScene : Move & resize debugging fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240743/

相关文章:

swift - UIImages 后面的 SpriteNode

swift - SKSpriteNode 的循环位置

android - 如何在Android/iOS中释放组件

ios - 如何根据用户位置重新调整 SKNodes

ios - 删除 float 中小数点前的前导零

ios - 无法根据其文本动态调整标签的高度

ios - 如何从 UICollectionView 弹出一个 uicollectionViewCell?

swift - 按 Y 移动 SKSpriteNode - Swift 2 + SpriteKit

ios - Sprite 套件 - 命名重复的对象

arrays - 在遍历数组时为每个元素添加延迟