更新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
}
}
适合我。我得到这个在控制台日志:
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加载?
你好,大红色的X是因为你没有标有背景的图形图像。我没有在我的代码中包含资产。这是假设。但是从你的控制台日志中,我发现你确实进入了一步。在我的情况下,Console不记录任何内容。由于某种原因didMove没有被调用。所以didMove内部没有任何代码正在执行。 – CyberShoggy
是的 - 我提到获取'X'是因为它表示代码正在工作 - 我只是没有将任何图像导入到测试项目中。所以当这段代码运行时,最可能的问题就是你的'GameViewController.swift'文件。你可以发布代码吗? –
所以,基本上,在你的情况下,didMove被调用。在我的情况下,它不是! – CyberShoggy
你必须发布你的代码。:: –