SKScene:移动和调整调试字段的大小

Posted

技术标签:

【中文标题】SKScene:移动和调整调试字段的大小【英文标题】:SKScene: Move & resize debugging fields 【发布时间】:2016-03-26 20:52:16 【问题描述】:

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

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 没问题,因为这仅适用于预发布测试期间,并且会在发布前被删除。

【问题讨论】:

我猜同样的问题,但没有真正的答案...***.com/q/23305959/3402095 感谢您的链接,我完全错过了那个。 【参考方案1】:

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

【讨论】:

谢谢,但冲突不在于调试文本后面的场景内容,而是在需要固定位置的场景前面呈现的非场景元素。而且,我们正在寻找一种帧速率/节点计数类型的错误,所以这正是我需要的信息。 :/ 我想我必须自己展示它。 @Thunk 好吧。好吧,在说话的那一刻必须做出一些补偿。或者谁知道呢,也许有人最终会想出一个解决方案。

以上是关于SKScene:移动和调整调试字段的大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftUI 时无法正确调整 SKScene 的大小

从 SKScene 获取命令键

SpriteKit SKScene 未正确调整大小以适合 iPhone 12

移动到另一个文本字段时,为啥 UIScrollView 会重新调整大小 - iOS iPhone

如何在 Chrome 中调整文本字段的大小?

UITextField 调整大小问题