Изменение SKScene по умолчанию

У меня есть класс IntroLayer, который я пытаюсь загрузить в качестве начальной сцены, когда моя игра запускается. Однако после простого изменения GameScene на IntroScene, как описано в этих простых шагах, мой IntroScene не загружается. Я устанавливаю точки останова, если сцена должна видеть, что она пропускает ее, и даже устанавливаю точки останова в реальном IntroScene, чтобы убедиться, что didMoveToView не вызывается. Есть идеи?

Я изменил разрешенную сцену с GameScene на IntroScene в GameViewController следующим образом:

import UIKit
import SpriteKit

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let scene = IntroScene(fileNamed:"IntroScene") {
            // 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)
        }
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
            return .AllButUpsideDown
        } else {
            return .All
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    override func prefersStatusBarHidden() -> Bool {
        return true
    }
}

Затем переименовал GameScene.swift в IntroScene.swift и изменил класс следующим образом:

import SpriteKit

class IntroScene: SKScene {
    override func didMoveToView(view: SKView) {

        backgroundColor = UIColor.blackColor()


        let fadeIn:SKAction = SKAction.fadeInWithDuration(1.0)
        let fadeOut:SKAction = SKAction.fadeOutWithDuration(1.0)




        let inspiredText = SKLabelNode(fontNamed: "Dead Kansas")
        inspiredText.alpha = 0.0
        inspiredText.text = "Inspired By"
        inspiredText.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        addChild(inspiredText)



        inspiredText.runAction(fadeIn)

    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */

        for touch in touches {
//            let location = touch.locationInNode(self)


        }
    }

}

Однако, когда я запускаю приложение, кажется, что IntroScene даже не вызывается, когда я устанавливаю точки останова, и я получаю экран с серым фоном.

1 ответ

Решение

Вам нужно переименовать ваши GameScene.sks в IntroScene.sks

Файл sks является архивным файлом данных вашей сцены. Если вы откроете его, вы заметите, что можете многое изменить в сцене и даже добавить узлы и спрайты непосредственно к ней. Когда вы звоните if let scene = IntroScene(fileNamed:"IntroScene") { Вы разархивируете файл sks для загрузки в качестве сцены, поэтому каждый раз, когда вы хотите создать новую сцену, помните, что вам понадобится этот файл.

Другие вопросы по тегам