更新Xcode后,简单的sprite kit语句不起作用

问题描述:

我正在学习使用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

你必须发布你的代码。:: –

适合我。我得到这个在控制台日志:

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