Новый вид сцены не центрируется после перехода из меню в вид сцены
Я создал вид сцены главного меню после завершения 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 ответ
Решение
Если у вас есть соответствующий файл 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 со сцены.