【问题标题】:How to change the first SKscene that is presented through gameviewcontroller如何更改通过gameviewcontroller呈现的第一个SKscene
【发布时间】:2016-06-12 20:41:40
【问题描述】:

所以我在我的 swift 项目中创建了几个不同的 SKScene,我在几个教程中看到你不必启动 gameScene.swift 作为你的第一个场景,但是我找不到一个教程解释如何

import UIKit
import SpriteKit

class GameViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(fileNamed:"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 SKS 更改为我的 MainMenu SKS,但我不断收到错误,而且我肯定遗漏了一些东西。谁能帮帮我?

【问题讨论】:

    标签: xcode swift sprite-kit viewcontroller


    【解决方案1】:
    import UIKit
    import SpriteKit
    
    class GameViewController: UIViewController {
    override func viewDidLoad() {
    super.viewDidLoad()
    
    if let newScene = MenuScene(fileNamed:"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 */
        newScene.scaleMode = .AspectFill
    
        skView.presentScene(newScene)
    }
    }
    } 
    

    因此,不要将 GameScene 作为您的初始场景,只需创建 MenuScene 实例并将其呈现在您的 viewDidLoad 中即可。请注意,由于这一行,您必须创建对应的 MenuScene.sks 文件:

    If let newScene = MenuScene(fileNamed:"MenuScene.sks"){ //...}

    因为您是从文件中加载它的。

    还可以转换到另一个场景,使用以下模式,例如在 touchesBegan 创建新场景,可选地创建 SKTransition 并呈现新场景。

    【讨论】:

    • 我尝试了这种方法并创建了一个单独的 mainMenu.sks 文件,但我仍然在“if let line”上收到错误我上传了一个屏幕截图,它希望我将文件名更改为编码器,但是如果我收到另一个错误,上面写着“无法将字符串值转换为 NS Coder”,我收到一个错误@whirlwind
    • 根据您上传的屏幕截图,您必须删除显示 GameScene 的代码,只留下显示 MainMenu 场景的代码。删除行: if let scene = GameScene(fileNamed:"GameScene") { // 配置视图。让skView = self.view as! SKView ... skView.presentScene(场景) }
    【解决方案2】:

    只要你想调用那个代码就行了。例如,你可以用一个按钮来连接它。

    @IBAction func playGame(sender: AnyObject) {
        if let scene = GameScene(fileNamed:"GameScene") {
            ...
        }
    }
    

    【讨论】:

      【解决方案3】:

      这是我在 Sprite Kit 项目中使用的。前段时间是我,我不记得它背后的任何原因。

      if let scene = DesiredScene.unarchiveFromFile("DesiredScene") as? DesiredScene

      也许其他人可以解释发生了什么

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-11
        • 1970-01-01
        相关资源
        最近更新 更多