当我从 GameScene 切换到新场景时,出现灰屏并且我的代码无法运行
Posted
技术标签:
【中文标题】当我从 GameScene 切换到新场景时,出现灰屏并且我的代码无法运行【英文标题】:When I switch from GameScene to a new scene I get a gray screen and my code doesn't run 【发布时间】:2015-08-21 18:09:58 【问题描述】:由于某种原因,当我尝试从 GameScene 切换到第二个场景时,屏幕变为灰色,但我在第二个场景中编写的代码都没有执行。我认为这个问题可能与 GameViewController 中的内容有关,因为当我将下面的代码从 let scene = GameScene() 切换到 let scene = EndScene 时,EndScene 中的代码运行良好。必须有一个简单的问题,我以某种方式忽略了。如果我需要提供更多信息,请告诉我,我对 spritekit 还很陌生。
我目前有这个代码:
import UIKit
import SpriteKit
class GameViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
let scene = GameScene()
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .ResizeFill
scene.anchorPoint = CGPointMake(0.5, 0.5)
scene.size = skView.bounds.size
skView.presentScene(scene)
override func shouldAutorotate() -> Bool
return true
override func supportedInterfaceOrientations() -> Int
if UIDevice.currentDevice().userInterfaceIdiom == .Phone
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
else
return Int(UIInterfaceOrientationMask.All.rawValue)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
override func prefersStatusBarHidden() -> Bool
return true
我用来从 GameScene 切换到 EndScene 的代码是:
self.view?.presentScene(SKScene(fileNamed:"EndScene."))
【问题讨论】:
【参考方案1】:您的 SKScene 构造函数正在寻找一个名为 EndScene 的文件,而它实际上是一个类。尝试在 GameViewController 类中创建一个类似于 viewDidLoad 的函数:
func toEndScene()
let skView = self.view as! SKView
let eScene = EndScene()
eScene.scaleMode = .ResizeFill
eScene.anchorPoint = CGPointMake(0.5, 0.5)
eScene.size = skView.bounds.size
skView.presentScene(scene)
考虑到在 viewDidLoad 中为 EndScene 切换 GameScene 对您有用,我认为这是可行的。
【讨论】:
感谢您的快速响应。我用 GameScene 中的新代码替换了旧代码,我的应用立即崩溃了。 请使用此更新后的代码重试。如果它仍然崩溃,你能粘贴在崩溃的开头吗? 我最终只是将我的代码复制并粘贴到一个新项目中,它就可以工作了。我可能不小心从第一个项目中删除了一些代码。感谢您的帮助。以上是关于当我从 GameScene 切换到新场景时,出现灰屏并且我的代码无法运行的主要内容,如果未能解决你的问题,请参考以下文章