Swift / SpriteKit:数值变量总是返回0

时间:2015-02-28 23:06:14

标签: swift sprite-kit

我是Swift的新手,正在使用XCode 6.1.1 我正在制作的游戏是一个数学游戏 - 所以我使用int来产生方程值并回答值。答案值将由绵羊角色保存,绵羊为SKNodes。

首先是delcare全球对羊的价值观。为绵羊和答案分别设置var的原因是因为我稍后会检查羊的随机生成的int是否等于答案。

   var sheepValue = 0
var equation = 0
var answer = 0

然后,在产卵羊方法中,我还为每只产生的绵羊生成一个唯一的int值,并让绵羊将该值打印出来。

 let sheepValue = generateNumber3()
    let myString = String(sheepValue)
    let sheepLabel = SKLabelNode(fontNamed: "MERKIN")
    sheepLabel.name = "sheepmathproblem"
    sheepLabel.fontColor = SKColor.darkGrayColor()
    sheepLabel.fontSize = 30
    sheepLabel.text = myString
    sheep.addChild(sheepLabel)

这是随机数生成器方法:

   func generateNumber3() -> UInt32 {

    //generate random number from 1-10
    return arc4random_uniform(20) + 1

}

这是我在控制台中打印sheepValue的地方。出于某种原因,sheepValue和equation值从我将它们声明为全局变量时永远不会改变。我想通过使用“let sheepValue = generateNumber3()”会改变全局变量的值,但我显然错过了一些东西。

if CGRectIntersectsRect(sheep.frame, self.sandman.frame) {
    if self.sheepValue == self.equation {
        println("sheepValue: \(self.sheepValue)")
        println("equation: \(self.equation)")
        hitSheep.append(sheep)

        }

    }

谢谢你的帮助!对不起,如果这看起来很基本,我不知道为什么这不起作用..我确实尝试在方法中声明变量,但我需要在spawnSheep方法旁边的其他方法中检查羊值,所以我认为全局变量是足够好所以我可以在其他方法中访问它..或者以某种方式使int成为绵羊的属性 - 我不知道该怎么做或者它是一个好主意。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

let sheepValue = generateNumber3()

位于spawn方法的本地范围内。这与类中定义的sheepValue变量

不同
var sheepValue = 0

如果你想要它,那就这样做:

self.sheepValue = generateNumber3()