2016-03-30 10 views

Antwort

3

Speichern Sie die Sprite jedes Mal, wenn Sie laichen ein:

Irgendwo in Ihrer Initialisierung:

var lastSprite = SKSpriteNode() 

Dann in Ihrem Feind laich Code:

addChild(enemy) 
lastSprite = enemy 

Sie könnten haben überarbeite deine SKAction, um einen Block mit den 2 Anweisungen statt nur einem addChild auszuführen. Alternativ können Sie enumerateChildNodesWithName untersuchen, um zu sehen, ob der zuletzt hinzugefügte Sprite immer der letzte oder der erste gesendete Sprite ist.

0

Sie könnten auch self.children.last nutzen und es als SKSpriteNode werfen das letzte Element zum Array hinzugefügt bekommen (der Kinder)

+0

überprüfte ich die Dokumentation für Kinder in SKNode und ich denke, es ist nur ein Array der untergeordneten Knoten des Knotens - wissen Sie, ob .last garantiert der letzte hinzugefügte Knoten ist? –

+0

Yeah 'last' wird das letzte dem Array hinzugefügte Element erhalten. Nach [Apple Dokumentation] (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instm/SKNode/addChild :) 'addChild': Fügt einen Knoten zum ** Ende der Empfängerliste des Empfängers ** hinzu. Ich hoffe es hilft. –

0

ich Antwort Steve Ives verwenden würde, aber wenn der Name des Sprites werde nicht sein In meinem Spiel würde ich eine Integer-Variable anstelle eines neuen SKSpriteNode deklarieren, so dass es nicht so viel Speicher verbrauchen würde. Man könnte so etwas wie folgt verwenden:

// Declare your integer when you initialise  
    var lastNode = NSInteger() 

// You'd add your spritenode somewhere later in your code 
    lastSprite = SKSpriteNode(imageNamed: "something") 
    lastNode += 1 
    lastSprite.name = "myName \(lastNode)" 
    self.addChild(lastSprite) 

Dann, wenn Sie das letzte Sprite zugreifen möchten, dann würden Sie verwenden:

grabMeSprite = self.childNodeWithName("myName \(lastNode)") as! SKSpriteNode 
+0

Ich glaube nicht, dass lastSprite = der Feind mehr Speicher verbraucht, da er keine Kopie des Sprite-Objekts erstellt, sondern nur einen neuen Zeiger auf das vorhandene Sprite-Objekt. –

Verwandte Themen