我有一个根视图控制器,它使用SKLabelNode在场景上显示分数。您可以从此根导航到第二个视图控制器,通过玩短游戏可以改变分数。当我弹回到根视图控制器时,分数不会更新。
我已经使用协议/委托成功连接了两个视图控制器,因此分数从第二个视图控制器传递到根。 问题是根控制器的游戏场景中存在一个不会更新的变量。
我已尝试在场景文件(TheSceneIMade)中执行此操作:
var scoreLabel: SKLabelNode! // this is a class variable
override func didMove(to view: SKView) {
// among other things in this function...
scoreLabel = fgNode.childNode(withName: "score_number") as! SKLabelNode
}
只有一次调用“didMove”它是根视图控制器,其他所有内容都会弹出并弹出。
在场景的视图控制器文件中,我这样做了:
var sceneExample: MyScene? // this is a class variable
override func viewDidLoad() {
sceneExample = MyScene(fileNamed: "TheSceneIMade")
}
然后我试图在viewWillAppear中更改scoreLabel.text,但没有任何工作。
如何从自己的视图控制器访问和更新场景变量?