理想的方法是将场景与数据模型分开。
第二种方法是使用全局设置来替换存储在场景节点中的状态。
每次重新出现场景时,默认情况下都会重新加载所有节点。因此,存储在节点中的信息仅与场景有关,而与游戏数据模型有关。
您正在前往激动人心的游戏编程设计。玩得开心。
您可以通过为场景命名并检查它来解决问题 viewDidLoad 。
viewDidLoad
用户在场景3中获胜/失败后,您将创建场景2.例如,为该场景命名 scene.name = "scene_failed" ,然后将其呈现给用户。
scene.name = "scene_failed"
let transition = SKTransition.flipVertical(withDuration: 1.0) let next_scene = Scene_Two() next_scene?.name = "scene_failed" self.view?.presentScene(next_scene!, transition: transition)
这样,什么时候 viewDidLoad 调用场景2中的函数,它将触发if。
if scene?.name == "scene_failed" { // redirected from scene 2 hide_labels() } else { // the scene has no name. so for sure it came from scene 1 show_labels() }
通过为您提供场景名称,您可以随时了解您转换的场景。