Class 比较不同类别的Int值-Swift Sheep第2部分

Class 比较不同类别的Int值-Swift Sheep第2部分,class,swift,sprite-kit,Class,Swift,Sprite Kit,在我前面的问题()之后,我创建了sheepNode类来保存一个int值。对于Swift和类的声明方式仍然是新的,但是这个类在类GameSecene:SKScene{all my gameplay code}之外的同一个GameSecene.Swift文件中 下面是检查冲突的代码部分。当检查sheep.sheepValue是否等于当前方程式时,这似乎永远不会起作用 func checkCollisions() { var hitSheep: [SheepNode] = []

在我前面的问题()之后,我创建了sheepNode类来保存一个int值。对于Swift和类的声明方式仍然是新的,但是这个类在类GameSecene:SKScene{all my gameplay code}之外的同一个GameSecene.Swift文件中

下面是检查冲突的代码部分。当检查sheep.sheepValue是否等于当前方程式时,这似乎永远不会起作用

func checkCollisions() {
        var hitSheep: [SheepNode] = []
        enumerateChildNodesWithName("sheep") { node, _ in

        let sheep = node as SheepNode

        if CGRectIntersectsRect(sheep.frame, self.sandman.frame) {

        if sheep.sheepValue == self.equation {
            hitSheep.append(sheep)
            }
        }
设置断点后,我发现sheepValue始终为零。我通过设置self.equation=0再次检查了这一点,代码的工作方式应该是这样的

我的修复尝试

1.)在类GameClass:SKScene内的my spawnSheep函数中,我更改了

var sheepValue: Int = Int(arc4random_uniform(UInt32(12))+1)

2.)我尝试在我的类sheepNode中设置sheepValue:

class SheepNode: SKSpriteNode
{
//    var sheepValue:Int = 0
   var sheepValue:Int = Int(arc4random_uniform(UInt32(12))+1)

}
 sheep.sheepValue = Int(arc4random_uniform(UInt32(12))+1)

好吧,我的第三次尝试成功了!我希望这能帮助一些新手

我对sheepValue的思考过程是,它是sheepNode类的一个属性。因此,当我在指向该类的其他类中访问它时,我应该将其视为我的sheep对象的属性,该对象继承自sheepNode:

class SheepNode: SKSpriteNode
{
//    var sheepValue:Int = 0
   var sheepValue:Int = Int(arc4random_uniform(UInt32(12))+1)

}
 sheep.sheepValue = Int(arc4random_uniform(UInt32(12))+1)
我不知道如何用技术术语来解释,但我不得不添加“sheep.”以指向sheepNode类的sheepValue