2017-10-08 65 views
0

我正在學習使用Spritekit的遊戲編程。在對Xcode進行最新的更新之後,一切似乎都出錯了。我用Swift 3編寫的遊戲無法運行。一些精靈未被加載。更新Xcode後,簡單的sprite kit語句不起作用

我創建了一個新項目來測試。我包含一個簡單的png文件,並嘗試初始化一個SKSpriteNode對象並調用addChild。沒有出現。節點數量爲零。

我將不勝感激任何幫助。可能會出現什麼問題?

import SpriteKit 

class GameScene: SKScene { 

override func didMove(to view: SKView) { 
    print ("am in didmoveto now") 
    let background = SKSpriteNode(imageNamed: "martianbackground") 

    addChild(background) 
    } 
} 

打印語句不顯示。節點數是0.因此沒有添加子節點。由於某種原因didMove沒有被調用。斷點似乎沒有效果。

import UIKit 
import SpriteKit 


class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print ("view has loaded it would appear") 

     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 
    } 
} 
+1

你必須發佈你的代碼。:: –

回答

0

適合我。我得到這個在控制檯日誌:

am in didmoveto now 
2017-10-08 22:13:09.721183+0100 <project_name>[4608:2085947] SKTexture: Error loading image resource: "martianbackground" 

模擬器屏幕顯示在中心的大,紅色的「X」和節點數爲2

你確定這個「GameScene」實際上是被你的GameViewController加載?

+0

你好,大紅色的X是因爲你沒有標有背景的圖形圖像。我沒有在我的代碼中包含資產。這是假設。但是從你的控制檯日誌中,我發現你確實進入了一步。在我的情況下,Console不記錄任何內容。由於某種原因didMove沒有被調用。所以didMove內部沒有任何代碼正在執行。 – CyberShoggy

+0

是的 - 我提到獲取'X'是因爲它表示代碼正在工作 - 我只是沒有將任何圖像導入到測試項目中。所以當這段代碼運行時,最可能的問題就是你的'GameViewController.swift'文件。你可以發佈代碼嗎? –

+0

所以,基本上,在你的情況下,didMove被調用。在我的情況下,它不是! – CyberShoggy