gpt4 book ai didi

swift : Updated Variable in a different scene

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:19 25 4
gpt4 key购买 nike

我的 GameScene 中有一个变量,它是分数变量,它通过 SKLabelNode 显示在屏幕上。

每次发生碰撞时,分数都会加 1,分数会作为字符串传输到 SKLabelNode,然后在屏幕上更新。

问题是,当我从我的 GameOverScene 调用它时(最终分数与“游戏结束”一起显示的场景),我得到分数的第一个值,即 0。就像 GameOverScene 正在读取变量,但不是更新了一个。如何获取更新的变量?谁能帮忙?

代码:

class GameScene: SKScene, SKPhysicsContactDelegate {
// S C O R E !
var score = 0
var scoreText: String = ""

var scoreOnScreen = SKLabelNode()
...

override func didMoveToView(view: SKView) {
// S C O R E
scoreOnScreen.position = CGPoint(x: size.width / 2, y: size.height * 0.8)
scoreText = String(score)
scoreOnScreen.text = scoreText

当碰撞发生时,得分+1

func bulletDidCollideWithEnemy(enemy: SKSpriteNode, bullet: SKSpriteNode) {

score++
scoreText = String(score)
scoreOnScreen.text = scoreText

然后是 GameOverScene:

import SpriteKit
import UIKit

class GameOverScene: SKScene {

let GameSceneInstance = GameScene()
let bgImage = SKSpriteNode(imageNamed: "background")
let afraidLogo = SKSpriteNode(imageNamed: "gameoverlogo")
var gameOverLabel = SKLabelNode()

override func didMoveToView(view: SKView) {

GameSceneInstance.scoreOnScreen.text = String(GameSceneInstance.score)

bgImage.position = CGPoint(x: size.width / 2, y: size.height / 2)
bgImage.setScale(0.75)
addChild(bgImage)

afraidLogo.position = CGPoint(x: size.width / 2, y: size.height / 2)
afraidLogo.setScale(0.50)
addChild(afraidLogo)

gameOverLabel.fontSize = 40
gameOverLabel.fontColor = SKColor.whiteColor()
gameOverLabel.text = "score: \(GameSceneInstance.scoreOnScreen.text)"
gameOverLabel.position = CGPointMake(self.size.width/2, 2.0 / 3.0 * self.size.height);
addChild(gameOverLabel)

}

我敢打赌这只是代码的一个简单问题。感谢任何帮助。

最佳答案

我在一个绰号为 Jasamer 的 reddit 人的帮助下弄明白了。盖伊摇滚。

这是我所做的更改:

场景切换时

let scene = GameOverScene(size: skView.bounds.size)

我补充说:

    scene.gameScene = self
scene.score = score

然后是 GameOverScene:

class GameOverScene: SKScene {

var gameScene = GameScene()
override func didMoveToView(view: SKView) {
gameOverLabel.text = "score: \(gameScene.score)"

并且有效。

我认为主要问题是没有设置 scene.GameScene = self

我希望有一天这对某人有所帮助。

关于 swift : Updated Variable in a different scene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com