gpt4 book ai didi

Swift:在原始 GameScene 上加载新的 SKScene? (仍然保留 GameScene 在下面?)

转载 作者:行者123 更新时间:2023-11-28 13:08:12 25 4
gpt4 key购买 nike

好吧,我在 Swift 中创建了一个 sprite kit 游戏,我需要展示一个新的 SKScene OVER(因为在新场景中会有一个清晰的背景,所以你仍然可以看到 GameScene 下面)我原来的 GameScene

我尝试了多种方式,最初过渡到一个 View Controller ,它反过来应该呈现新的 SKScene 就像苹果对 GameScene 所做的那样GameViewController,但是我得到的只是一个灰色屏幕。新的 SKScene 的代码都没有被执行,我也无法添加任何 skspritenodes 或其他任何内容。

所以现在我已经部分成功地转换到一个 View Controller ,它转换到新的 SKScene(名为 GameOverScene),如下所示:

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
self.dismissViewControllerAnimated(true, completion: nil)
(self.view as! SKView).presentScene(GameOverScene(size: self.view.bounds.size))

}

然后在 GameOverScene 中我有:

    let saveMeBtn = SKSpriteNode()

override func didMoveToView(view: SKView) {

//Do stuff in scene
println("it works!")

self.backgroundColor = SKColor.clearColor()

saveMeBtn.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.5)
saveMeBtn.setScale(1)
addChild(saveMeBtn)

}

}

它似乎工作正常,但是有两个问题:

  1. “它有效!打印到控制台,我可以更改背景颜色,但我不能添加 Sprite 节点或任何东西。例如,我看不到 saveMeBtn

  2. 即使我将背景设置为 clearColor(),我也看不到下面的 GameScene。我只是黑屏。

我在这里做错了什么?我如何在 GameScene 上加载另一个 SKScene 并仍然看到 GameScene

最佳答案

据我了解,SpriteKit 已优化为仅渲染呈现的场景,而 SKViews 一次只能呈现一个场景。

我可能是错的,但它会知道何时带有 SKView/SKScene 的 UIViewController 不是最上面的,并且它不会呈现或更新。这类似于您使用 SKView 向另一个 VC 进行推送转场。如果它继续渲染它,你会得到非常糟糕的性能,所以 SpriteKit 停止渲染和更新不可见的 SKViews。

如果您希望您的游戏显示在下方,您最好的办法是为它创建一个 SKNode 或 SKSpriteNode 子类。您可以根据需要调整它的大小,并且仍然可以看到它下面的其余场景。如果是我,我会添加一个名为 GameOver 的 SKNode,添加我需要的任何 Sprites,然后将游戏滑过屏幕。

希望对您有所帮助。

关于Swift:在原始 GameScene 上加载新的 SKScene? (仍然保留 GameScene 在下面?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162016/

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