2016-03-26 6 views
2

私のような私のシーンで有効なデバッグフィールド、持っているデバッグのサイズを変更:SKScene:移動&フィールド

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

私は思いますが、本当の答えはありません... http://stackoverflow.com/q/23305959/3402095 – Whirlwind

+0

リンクをありがとう、私は完全に1つを逃した。 – Thunk

答えて

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続きを読みます。

+0

ありがとうございますが、デバッグテキストの背後にあるシーンの内容ではコンフリクトがありません。シーンの前に固定された位置が必要な非シーン要素があります。そして、私たちはフレームレート/ノード数の種類のバグを追いかけているので、これはまさに必要な情報です。 :/私はそれを自分で表示する必要があるだろうと思う。 – Thunk

+0

@Thunkああ大丈夫です。まあ、話す瞬間にいくらかの補償をしなければなりません。または誰が知っている、誰かが最終的に解決策を思いつくだろう。 – Whirlwind