我在场景中启用了调试字段,例如:
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/