swift swift3 sprite-kit skscene

Error al volver a una vista anterior en Swift 3 Spritkit



swift3 sprite-kit (1)

El problema comenzó con esta línea:

PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode

porque como dije, self.childNode(withName:) volvía a nil

El problema real sin embargo estaba relacionado con esta línea (dentro de leavegamefunc() ):

let menuscene = MenuScene(size: self.size)

Ha definido su PlaygamebtnNode en MenuScene.sks y está utilizando el inicializador incorrecto ( MenuScene.init(size:) ).

La solución:

func leavegamefunc() { if let menuScene = MenuScene(fileNamed: "MenuScene"){ menuScene.scaleMode = scaleMode self.view?.presentScene(menuScene) } }

Cuando cambio a mi escena de mi escena de menú, funciona perfectamente bien. Pero, cuando trato de regresar, es un desastre. Obtengo: encontrado inesperadamente nulo mientras desenvuelvo un valor opcional. El código para regresar es:

let menuscene = MenuScene(size: self.size) menuscene.scaleMode = scaleMode self.view?.presentScene(menuscene)

El código del que dice que proviene el error es:

PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode NamelblNode = self.childNode(withName: "NamelblNode") as! SKLabelNode

Esto es extraño porque cuando el juego se inicia, está bien con este código. El error tiene que provenir del cambio en las vistas / escenas. De antemano gracias por su ayuda. El código para la clase entrie MenuScene es:

import SpriteKit import GameplayKit class MenuScene: SKScene { var PlaygamebtnNode:SKSpriteNode! var NamelblNode:SKLabelNode! override func didMove(to view: SKView) { PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode NamelblNode = self.childNode(withName: "NamelblNode") as! SKLabelNode PlaygamebtnNode.texture = SKTexture(imageNamed: "Playgamebtn") } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let touch = touches.first if let location = touch?.location(in: self){ let nodesArray = self.nodes(at: location) if nodesArray.first?.name == "PlaygamebtnNode" { let transition = SKTransition.flipHorizontal(withDuration: 0.5) let nextScene = GameScene(size: self.size) self.view?.presentScene(nextScene, transition: transition) } } }

La razón por la que no se encuentra nada común mientras se desenvuelve una pregunta de valor opcional es porque no muestra este error hasta que intento volver al menú.