Swift:Spritekit:切换场景(锚点?)

Swift: Spritekit: Switching Scenes (anchor point?)

我有两个场景想切换。 每个场景都有一个切换到另一个场景的按钮,我希望该按钮位于屏幕中间。 对于第一个场景,这是可行的(我将按钮放在 0,0 处)。但是对于第二个场景,0,0 的锚点在左下角而不是中心..奇怪的是,当回到第一个场景时,按钮出现在按钮左边,即使它之前是居中的!

这是代码(两个场景的代码相同,除了场景名称)

class LevelGeneral: SKScene {
    var buttonplay = SKSpriteNode()

    override func didMove(to view: SKView) {

        buttonplay = SKSpriteNode(imageNamed: "button1")
        buttonplay.size = CGSize(width: self.frame.width/2, height: self.frame.height/8)
        buttonplay.position = CGPoint(x: 0, y: 0)
        self.addChild(buttonplay)

    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        for touch in touches {
            let location = touch.location(in: self)
            if buttonplay.contains(location) {
                let nextScene = GameScene(size: self.size)
                let reveal = SKTransition.fade(withDuration: 0.1)
                self.view?.presentScene(nextScene,transition: reveal)
            }
        }
    }
}

如果我把按钮位置改成screenwidth/2、screenheight/2(两个场景),按钮会先出现在右上角,然后居中。 任何帮助将不胜感激

这是因为 LevelGeneral 是使用默认锚点为 0.5,0.5 的 SKS 文件制作的,而 "GameScene" 是通过大小为 self.size 的代码制作的,锚点为 0.0, 0.0。您应该尝试与加载场景的方式保持一致。

个人应该习惯设计与功能分离的心态。在 SpriteKit 编辑器中构建一切的外观,您永远不必猜测为什么事物没有出现在应有的位置(除非某些功能导致它没有出现在应有的位置)