【问题标题】:Scene doesn't fully show after changing from another scene从另一个场景更改后场景未完全显示
【发布时间】:2017-02-04 21:35:40
【问题描述】:

在我的 MenuScene 中,我有一个播放按钮,如果我触摸它,它会使用以下代码更改为 GameScene:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    for touch in touches {
        let location = touch.location(in: self)

        if atPoint(location).name == "playButton" {
            let playScene = GameScene(size: self.size)
            let playSceneTransition = SKTransition.fade(withDuration: 0.5)
            playScene.scaleMode = SKSceneScaleMode.aspectFill
            self.view?.presentScene(playScene, transition: playSceneTransition)

            }
    }

但 GameScene 看起来像在左下角,只显示场景的右上角。如果我在启动游戏时更改 GameViewCotroller 以显示 GameScene 而不是 MenuScene,它看起来非常好。这是为什么?去 GameScene 的代码有问题吗?

【问题讨论】:

  • 可能和你的GameScene锚点属性有关,你修改了吗?
  • 不,我从未更改过任何锚点属性。
  • 我在这里注意到的两件事是,问题似乎(显然)来自您的 GameScene 类(因为显示其他场景不是问题),这看起来非常类似于在 (0,0) 添加带有锚点 (0.5, 0.5) 的 SKSpriteNode 时会遇到的问题。你的 GameScene 孩子是什么?
  • 哦等等,我刚刚注意到我的 GameScene.sks 和 .swift 文件由于某种原因不再链接。
  • “链接”是什么意思?

标签: swift sprite-kit


【解决方案1】:

这里的问题是您正在通过 SKS 文件加载 MenuScene。默认情况下,这会将您的锚点置于 0.5,0.5。

然后,您将使用大小初始化程序(而不是 SKS 文件)转换到游戏场景,使用 GameScene(size: self.size),其锚点将是 0,0 或 0.5,0.5,具体取决于您的用户的 iOS 版本正在加载。

我建议避免使用GameScene(size: self.size) 并使用GameScene(fileNamed:"GameScene") 以保持一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多