iPhone Swift更改初始场景

时间:2015-09-14 16:59:46

标签: iphone swift ios8 sprite-kit

现在,我知道如何在SpriteKit游戏中过渡场景。我无法将大脑包裹起来的棘手问题是改变最初加载的大脑。我创造的游戏直接进入游戏。那个初始场景叫做GameScene.swift。我创建了一个MainMenuScene.swift,我试图将其更改为首先加载它。然后,一旦点击,我就会在下一个场景中进行SKTransition,就像我在游戏后期工作一样。

这是我的观点控制器代码:

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
        // Configure the view.
        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 = .AspectFill

        skView.presentScene(scene)
    }
}

我想改变" GameScene"到" MainMenuScene"会做的伎俩,但没有任何东西得到加载。然后我想也许这是大小,但所有设置都与其他场景相同。即使尝试添加节点计数,也不会显示任何内容。所以我假设没有任何东西被装载。也许我是盲目和愚蠢但我无法看到它。

提前致谢。

2 个答案:

答案 0 :(得分:4)

使你的viewController像这样:

class GameViewController: UIViewController {

           override func viewDidLoad() {
                super.viewDidLoad()
                let scene = MainMenuScene(size: view.bounds.size) //This can be any scene you want the game to load first
                let skView = self.view as! SKView
                skView.showsFPS = false
                skView.showsNodeCount = false
                skView.ignoresSiblingOrder = true
                scene.scaleMode = .ResizeFill
                skView.presentScene(scene)
        }

    }

在您的MainMenuScene.swift(以及您希望包含在游戏中的所有其他场景)中,确保该类本身如下所示:

class chooseScene: SKScene {

override func didMoveToView(view: SKView) {

} }

这是我在viewController和SKScenes中使用的代码,几个月前我遇到了与你完全相同的问题。

答案 1 :(得分:0)

你的viewcontroller中的

试试这个

// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true

/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true

let scene = MainMenuScene(size: skView.frame.size)

/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill

skView.presentScene(scene)
MainMenuScene 中的

,请确保添加这些初始值设定项

override init(size: CGSize) {
    super.init(size: size)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}