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 的大小
SpriteKit SKScene 未正确调整大小以适合 iPhone 12