2014-11-22 57 views
0

我做了一个快速SpriteKit游戏,但现在我想添加一个菜单场景(最终失败的场景)。所以我做的是斯威夫特多场景

  1. 我创建了一个名为菜单场景的新场景。

  2. 我编辑GameViewController并将其更改为加载菜单场景(它的工作)。

  3. MenuScene.swift我把一些代码,所以被点击它会运行这段代码精灵时:

    let reveal = SKTransition.flipHorizontalWithDuration(0.5) 
    
    let scene = GameScene(size: size) 
    
    self.view?.presentScene(scene, transition:reveal) 
    

但是,当我点击按钮,它圆翻转到下一个现场并立即崩溃。

所以我的问题是:我是这样做的正确方法,如果我为什么会崩溃?

+0

你会得到什么崩溃,你可以发布你的场景代码 – Okapi 2014-11-22 18:56:16

+0

你是什么意思“场景代码”?我知道这些场景是可以工作的,因为我可以设置GameViewController来默认加载它们,并且它可以工作。 – HarveyBrCo 2014-11-22 20:10:36

+0

您发布了您收到的错误和日志 – Okapi 2014-11-22 20:12:43

回答

1

事实证明,我并没有删除一个粒子发射器,所以我把一些代码删除它只是在转换和它的工作。

+0

当你需要这样的东西在释放对象之前被移除时,你总是可以覆盖deinit – Knight0fDragon 2016-02-04 18:52:08

-2

既然你在精灵套件是,这是错误的使用方法:

self.view?.presentScene(scene, transition:reveal) 

你应该做到以下几点:

let scene = GameScene(size: view.bounds.size) 
let skView = view as SKView 

//skView.showsFPS = true 
//skView.showsNodeCount = true 
//skView.ignoresSiblingOrder = true 
//scene.scaleMode = .ResizeFill 

skView.presentScene(scene, transition:reveal) 
+0

当我把那个有2个错误1. SKView?没有名为bounds的成员2. Downcast SKView? SKView只解开可选项;你的意思是使用!?当我通过改变view.bounds.size来改正这些错误的大小和查看作为SKView来查看!它只是在我点击的那一刻崩溃了? – HarveyBrCo 2014-11-22 22:29:29

+1

他的方式如何“错误”?这不是我更喜欢的方式,但它实际上比您提供的答案更有效。在OP代码中,如果视图为零,那么代码不会崩溃,并且可以稍后处理,在您的代码中,您必须强制执行该视图,但某种方式并非零,这不会在此处发布。 – Knight0fDragon 2016-02-04 18:50:11

-1

如果你这样做,它应该工作:

let reveal = SKTransition.flipHorizontalWithDuration(0.5) 
let scene = GameScene(size: self.frame.size) 
let skView = view as SKView! 
skView.presentScene(scene, transition:reveal) 

我希望这对你有用。

+0

除强制视图不为空外,此代码不会添加任何内容。它不能解决问题,它只是增加了游戏刚刚崩溃的原因 – Knight0fDragon 2016-02-04 18:44:52