私は自分のコードに2つのラベルノードを追加し、もう一方が表示されている間は隠しておき、ゲームが始まったら逆にします。skLabelNodesは時々しか動作しません
class GameScene: SKScene {
// Declarations
let startLabel:SKLabelNode = SKLabelNode()
let scoreLabel:SKLabelNode = SKLabelNode()
var score = 0
override func didMoveToView(view: SKView) {
// Properties
startLabel.fontSize = 20
startLabel.fontColor = UIColor.blackColor()
startLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.5)
startLabel.text = "Touch Paddle To Begin"
startLabel.hidden = false
self.addChild(startLabel)
scoreLabel.fontSize = 20
scoreLabel.fontColor = UIColor.blackColor()
scoreLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.75)
scoreLabel.text = "\(score)"
scoreLabel.hidden = true
self.addChild(scoreLabel)
次に、パドルがタッチされると、moveBall()関数が開始され、ゲームが開始されます。ここで私はラベルを入れ替えました。
func moveBall() {
// Setting Labels
self.startLabel.hidden = true
self.scoreLabel.hidden = false
// Starting game
self.ball.physicsBody?.dynamic = true
ただし、時にはうまくいきます。それは完全に動作し、何も変更せずに再び実行し、1つのラベルしか表示されません。もう一度、もう1つのラベルが表示されます。そうしないと、フレームだけが表示され、startLabelが消えます。
免責事項:コード作成の方法はわかりません。ゲームのアイディアを得て、それを実現しようとしています。ソリューションが単純なものであれば謝罪してください。また、私のコードのアドバイスをいただければ幸いです。ありがとう!
どこでmoveBall()を呼び出しますか? – Whirlwind
ラベルのzPositionを確認し、 'GameViewController.swift'で' ignoreSiblingOrder'を 'false'に設定していますか?ラベルがその背後に描かれているのではないかと疑問に思いますか? –