【问题标题】:Changing the initial scene in spritekit更改 spritekit 中的初始场景
【发布时间】:2016-04-26 21:47:56
【问题描述】:

目标:

加载 Instructions1.swift 文件中的场景作为游戏的第一个场景。

我做了什么:

所以我在我的项目中创建了 2 个新文件:Instructions1.sks 和 Instructions1.swift

然后在 GameViewController.swift 中,我改变了 viewDidLoad 如下:

 override func viewDidLoad()
    {
        super.viewDidLoad()

        if let scene = GameScene.unarchiveFromFile("Instructions1") 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.swift。我还在 Instructions1.sks 的自定义类下编写了“Instructions1”。不幸的是,仍然没有运气!

不胜感激!

谢谢!

【问题讨论】:

  • 你试过if let scene = Instructions1(fileNamed:"Instructions1")吗?此外,如果Instructions1 是一个场景,您可能希望具有描述性并将其命名为Instructions1Scene。 1 也是可疑的,但你可能有一个原因。
  • 不幸的是,这给出了编译错误:“使用未解析的标识符'InstructionsOne”并在 if let scene = InstructionsOne.unarchiveFromFile 中突出显示 InstructionsOne ......谢谢!
  • Ben 说的应该可行,将所有 GameScene 替换为 Instruction1
  • @BenKane ,我已经进行了搜索和替换,这是我的新代码:pastebin.com/aMpZdDuG 不幸的是它仍然无法正常工作,我收到此编译错误:s32.postimg.org/kdfd6xbsl/… 请提供其他建议吗?谢谢!!
  • 不过,你还没有尝试过我的建议。我建议的是更新的方法。您正在使用旧方法。 if let scene = InstructionsOne.unarchiveFromFile 不接近 if let scene = Instructions1(fileNamed:"Instructions1")。请再次尝试我的建议

标签: ios iphone swift sprite-kit


【解决方案1】:

您应该更改正在加载的场景的名称。从文件加载 SKScene 时,还可以使用 init(fileNamed:) 初始化程序。

希望这会有所帮助!

override func viewDidLoad()
{
    super.viewDidLoad()

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

【讨论】:

  • 嗨@Ryan Temple,感谢您的回复。我得到这个编译错误:s32.postimg.org/5tij66dat/… 如果让场景 = 指令 1 根本不被识别为一个类,就好像行中的“指令 1”!谢谢!!
  • @user3369038 是您项目目录中的 Instructions1.swift 类,该类是否已正确初始化?
  • 我想是的。通过在线观看教程,我仍在学习东西,这是我第一次创建新课程/场景:这是项目结构:s32.postimg.org/pftk38u6t/…这是课程本身:s32.postimg.org/5j0yg4yj9/…
  • @user3369038 我建议您这样做,因为代码似乎没有任何问题。创建一个新项目并重新创建它(如果它没有太多可以复制的话)。这可能会消除问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多