gpt4 book ai didi

ios - SpriteKit 场景

转载 作者:搜寻专家 更新时间:2023-11-01 06:22:56 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 SpriteKit 中添加更多场景。如果我在 GameViewController 中使用 SpriteKit 生成的行

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

这工作正常,但是如果我创建一个也是 SKScene 类型的类并将其添加到 SKView。

let newscene = GameMenu()
skView.presentScene(newscene)

这行不通。它只显示褪色的灰色,只有一小部分节点,但实际上没有显示任何内容。 SpriteKit 使用 unarchiveFromFile 创建场景的方式有问题吗?我什至没有使用 Storyboard或 GameScene.sks。整个游戏都是以编程方式创建的。如果我尝试为菜单创建另一个 ViewController 并使用 presentViewController,则会出现另一个问题。当它尝试运行时,我也会收到一条错误消息,提示“无法将‘UIView’类型的值转换为‘SKView’。”我正在使用类似于 GameViewController 的同一行来转换它。

let skView = self.view as! SKView

这是它不断突破的路线。如果有人对如何解决此问题有任何见解,将不胜感激。

最佳答案

这是我通常制作场景的方式:

  1. 转到文件 -> 新建 -> 文件...
  2. 点击Cocoa类,点击下一步
  3. 随便命名,让它成为SKScene的子类,选择swift
  4. 在新类中,让它看起来像这样:

    import SpriteKit

    class GameScene: SKScene {

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

    //Other init code
    }

    required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    }

    //Other functions like override func touchesBegan, update, etc. Whatever you want
    }
  5. 如果你想首先显示场景,GameViewController,你可以在 viewDidLoad 中输入:

    let scene = GameScene(size: skView.bounds.size)
    skView.presentScene(scene)

    (skView 应该已经为您制作好了,但如果不是,它:let skView = self.view as!SKView,并将其放在所有 let scene = GameScene 之前。 ..等等和viewDidLoad中的东西。

  6. 然后,如果您想从不同的 SKScene 而非 View Controller 呈现场景,请执行以下操作:

    let scene = GameScene(size: self.frame.size)
    self.view?.presentScene(scene)

关于ios - SpriteKit 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com