SpriteKit 记住哪个精灵被触摸

SpriteKit remembering which sprite was touched

我有一个 'game' 有 3 个精灵。 如果用户单击 'Sprite1',然后单击 'Sprite2'。 有什么方法可以记住按下了哪些精灵? 它只适用于 2 个精灵,如果有更多我需要清空 'memory' 并从最后一个 'touched' 重新开始,我不想使用布尔值。

我所有的精灵都有 .name 属性,所以我可以在那里访问它们。

像这样 IF 语句就足够了吗

var spriteArr:[String] = []
let location = (touch as UITouch).locationInNode(self)
for touch in touches{
   if spriteArr.count < 2 {
        spriteArr.append(self.nodeAtPoint(location))
   }else{
      spriteArr.removeAll
      spriteArr.append(self.nodeAtPoint(location))
   }
}

您可以通过访问节点的 .name 并将名称存储在这样的数组中来检查 Sprites。

 var nodeNames:[String] = []
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {         
        let touch = touches.first as! UITouch
        var touchedNode:SKNode = nodeAtPoint(touch.locationInNode(self))

        if(nodeNames.count > 2){
             nodeNames = []
        }
        if(touchedNode.name != nil){
            if(!contains(nodeNames, touchedNode.name)){
                 nodeNames.append(touchedNode.name)
            }
        }
    }