ios - 如何在 Sprite 套件项目中设置初始场景?

标签 ios swift sprite-kit skscene

我有两个 SKScenes GameSceneMenuScene,打开应用程序时出现的默认场景是 GameScene 但我希望 MenuScene首先出现

我尝试更改 GameViewController 中的代码:

import UIKit
import SpriteKit

extension SKNode {
    class func unarchiveFromFile(file : String) -> SKNode? {
        if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
            var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
            var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

            archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
            let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! MenuScene
            archiver.finishDecoding()
            return scene
        } else {
            return nil
        }
    }
}

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let scene = MenuScene.unarchiveFromFile("MenuScene") as? MenuScene {
            // 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)
        }
    }

但它只显示灰屏而不是场景,我还需要做其他什么吗?

最佳答案

您的 MenuScenesks 文件吗?可能不会,您只需将 swift 文件作为场景即可。

如果我理解正确的话,解档程序会获取一个 sks 文件并将其解档,查看“unarchiveFromFile”方法,查看 if 语句,然后 else 返回 nil。

你也许可以这样做:

if let scene = new MenuScene() {

而不是取消存档。否则制作 MenuScene 文件的 sks 版本。

关于ios - 如何在 Sprite 套件项目中设置初始场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569503/

相关文章:

ios - 获得 CGVector 的负数

ios - UILabel 初始化时调用的函数

ios - 解析错误代码 209 和 -34018

ios - ScrollView 平移手势与 panGestureRecognizer 之间的冲突

swift - 如何在 Swift 中使用 UILongPressGestureRecognizer 通过标签属性传递 indexPath.row?

ios - 在自定义形状中设置和管理可编辑的 UITextview

ios - 如何使用协议(protocol)/委托(delegate)在 UIViewController 之间传递数据

swift - SpriteKit + Swift - 如何使用缓动移动节点?

iOS:我可以同时配对多个蓝牙音频设备吗?

swift - 如何在第一层SWIFT上添加SKNode