2017-12-29 43 views
0

私は、サブクラスを作成しました:Swiftの親からSKSpriteNodeのサブクラスを正しく削除するにはどうしたらいいですか?

class EnemySprite: SKSpriteNode

をして、このコードを使用して私のゲームシーンで敵を追加しました:私は敵に撃つとき

let enemy = EnemySprite(imageNamed:"enemy.png") 
self.addChild(enemy) 

は、今私は、コードを持っている:

enemy.removeFromParent() 

敵は画面に表示されませんが、_enemiesSpritesArray.countは同じままです。また、敵がいる場所に撃ち込むと、スプライトがまだ同じ場所にいるように弾丸が止まります。 私が追加しようとしました:

override func removeFromParent() { 
    super.removeFromParent() 
} 

が、それでも同じ。

どうすればスプライトを完全に削除できますか?

答えて

2

アレイからもインスタンスを削除する必要があります。

if let index = enemiesSpritesArray.index(of: enemy) { 
    enemiesSpritesArray.remove(at: index) 
} 
+0

ありがとう、たくさんの友達!それは素晴らしいことではありません:)そして、自動カウントの時代にリリースする必要はありませんが、まだ配列から手動で項目を削除する必要があると考えて... – EranKT

+1

あなたの配列からそれを削除することは、ARCと自動リリースとは関係ありません。それが配列内にあるという事実はオブジェクトがまだ存在していることを意味し、衝突検出が少し面白いかもしれない理由です。 –

+1

私はすぐにCocos-2dを使い始めました。子どもを取り除くと、自動的に配列からそれを削除します。私は少し甘やかされたと思う...;) – EranKT

関連する問題