2017-03-18 13 views
2

SpriteKitを習得しようとしています。私はコード内のシーンに四角形/四角形を追加したいと思います。アイテムは決して表示されません。SpriteKit - SpriteNodeが表示されない

私がしたいのは、画面に白い四角形を追加するだけですが、追加しないことがわかります。

ブレークポイントでは、didMove()が呼び出されないようです。

私は間違っていますか?

class GameScene: SKScene { 

    override func didMove(to view: SKView) { 
     let item = SKSpriteNode(color: .white, size: CGSize(width: 150, height: 200)) 
     item.position = CGPoint(x: self.size.width/2, y: self.size.height/2) 
     self.addChild(item) 
    } 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    } 

    override func update(_ currentTime: TimeInterval) { 
     // Called before each frame is rendered 
    } 
} 

更新

私はGameScene.sksはありませんXcodeの

class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let view = self.view as! SKView? { 
      // Load the SKScene from 'GameScene.sks' 
      if let scene = SKScene(fileNamed: "GameScene") { 
       // Set the scale mode to scale to fit the window 
       scene.scaleMode = .aspectFill 

       // Present the scene 
       view.presentScene(scene) 
      } 

      view.ignoresSiblingOrder = true 

      view.showsFPS = true 
      view.showsNodeCount = true 
     } 
    } 

    override var shouldAutorotate: Bool { 
     return true 
    } 

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     if UIDevice.current.userInterfaceIdiom == .phone { 
      return .allButUpsideDown 
     } else { 
      return .all 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Release any cached data, images, etc that aren't in use. 
    } 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 
} 

によって生成されたビューコントローラを変更していない私が使用しないよう、私は、このファイルを削除sksファイル

+0

は 'item.zPosition = 100'を試してみて、あなたのスプライトの色を変更します?あなたの背景が白の場合 – Joe

+0

スクリーンの背景はどのような色ですか? – CoolPenguin

+1

'GameScene'を' GameViewController(viewDidLoad) 'に設定しましたか? – Joe

答えて

1

didMove(表示:)にブレークポイントが決して達していない場合は、間違いなくあなたのViewController doesn '何らかの理由でシーンを提示しません。あなたは(その旨のか何か)があり、これらの行のいずれかを持っている場合は、あなたのViewControllerのファイル(例えばGameViewController.swift)を開いて見ることができます:

let viewSize = UIScreen.main.bounds.size 
let scene = GameScene(size: viewSize) 
let skView = self.view as! SKView 
skView.presentScene(scene) 
+0

私のビューコントローラをあなたのコードに置き換えて私の形状を表示しました – zardon

0

は、ビューコントローラは、シーンを提示し、それを変更していなかったが判明しますこの、)@Stoyanにより投稿されたコードが働いたと私は私のスプライトのviewDidLoad FUNC

オーバーライド(){ super.viewDidLoadを(示しまし以下

if let view = self.view as! SKView? { 

    let viewSize = UIScreen.main.bounds.size 
    let scene = GameScene(size: viewSize) 

    view.ignoresSiblingOrder = true 
    view.showsFPS = true 
    view.showsNodeCount = true 

    view.presentScene(scene) 

} 
+0

あなたのビューコントローラのコードを最初に見なければなりませんでした。今それは混乱です。それをクリアしましょう:skView.presentScene ...行を削除し、let skView =を削除して、最後の行としてview.presentScene(scene)を追加します。混乱については申し訳ありません! – Stoyan

+0

私は自分でコードを編集しようとしましたが、現在審査中です。 – Stoyan

+0

大変ありがとうございます。私はそれを承認するための通知が表示されないので、自分自身で行うことはできません。私はあなたが述べた変更を反映するために上記のコードを更新しました。私はそれが今正しいことを期待しています – zardon

関連する問題