我在场景中启用了调试字段,例如:
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会没问题,因为这只适用于预发布测试期间,并且会在发货前删除。
答案 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。