swift/ SpriteKit : Numerical variable always returning 0

标签 swift sprite-kit

我是 Swift 的新手,正在使用 XCode 6.1.1 我正在制作的游戏是一个数学游戏 - 所以我使用整数来生成方程值和答案值。答案值将由绵羊字符保存,绵羊是 SKNodes。

首先- delcare 绵羊值的全局变量。有一个单独的 var for sheeps 和 answer 的原因是因为我稍后会检查随机生成的 int 是否等于 sheeps 的 answer。

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

然后,在 spawn sheep 方法中,我还为每只生成的羊生成一个唯一的 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 成为绵羊的属性——我不确定该怎么做,或者这是否是个好主意。感谢您的宝贵时间!

最佳答案

let sheepValue = generateNumber3()

在您的 spawn 方法的本地范围内。这与类中定义的 sheepValue 变量不一样

var sheepValue = 0

如果你想要它一样,做这个:

self.sheepValue = generateNumber3()

关于 swift/ SpriteKit : Numerical variable always returning 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788021/

相关文章:

Swift - 我应该创建字符串 "count"的局部变量吗?

Swift 从 [String :[String:Any]] 的字典中访问内部键和值

ios - 在 viewDidAppear 之前无法获取 TableView 或 TableView 标题的宽度

swift - Vapor 网络套接字保持与数据库的连接

ios - Swift 2.0、SpriteKit - 不使用页面的 ScrollView 。

ios - 为什么我不能遍历 NSArray?

swift - 如何让造型不去GameOver? -SpriteKit

c++ - 在 SWIFT 中使用 C++ FFT 代码

ios - 未检测到 SpriteKit 碰撞

Swift - 如何填充路径(不透明路径)