Новый вид сцены не центрируется после перехода из меню в вид сцены - PullRequest
0 голосов
/ 27 апреля 2018

Я создал вид сцены главного меню после завершения GameScene. GameScene работал нормально сам по себе. Однако он не отображается в центре после переноса из вида сцены главного меню. Оба файла sks имеют одинаковые размеры по ширине и высоте и точки привязки. Почему это так?

class Menu: SKScene {

    var newGameButtonNode: SKSpriteNode?
    var bossFightButtonNode: SKSpriteNode?
    var highScoreLabelNode: SKLabelNode?

    override func didMove(to view: SKView) {        
        newGameButtonNode = self.childNode(withName: "newGameButton") as? SKSpriteNode
        bossFightButtonNode = self.childNode(withName: "bossFightButton") as? SKSpriteNode

        highScoreLabelNode = self.childNode(withName: "highScoreLabel") as? SKLabelNode        
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        //set touch to self

        let touch = touches.first

        if let location = touch?.location(in: self) {            
            let nodesArray = self.nodes(at: location)

            if nodesArray.first?.name == "newGameButton" {                
                let transition = SKTransition.flipHorizontal(withDuration: 0.5)
                let gameScene = GameScene(size: self.size)
                gameScene.scaleMode = .aspectFill
                self.view?.presentScene(gameScene, transition: transition)                
            }
        }        
    }
}

1 Ответ

0 голосов
/ 27 апреля 2018

Если у вас есть соответствующий файл SKS, созданный в редакторе сцен, вы загружаете свою сцену следующим образом ...

// Load the SKScene from GameScene.sks'
if let GameScene = GameScene(fileNamed: "GameScene")  {
    gameScene.scaleMode = .aspectFill
    self.view?.presentScene(GameScene, transition)
}

если у вас нет соответствующего файла SKS, созданного в редакторе сцены, но вы хотите загрузить сцену, созданную в коде, используйте ...

GameScene = GameScene(size: self.view?.bounds.size)
gameScene.scaleMode = .aspectFill
self.view?.presentScene(gameScene, transition)

Вы говорите, что оба имеют соответствующие файлы SKS, но пытаетесь загрузить его через код init со сцены

...