後にゼロになることから、弱いSKSpriteNodeを停止し、私は現在、(私のGameScene
クラスで)私のコードの先頭にweak
としてSKSpriteNode
を定義し、このようにそれを宣言します。スウィフト3(SpriteKitベース):私のプログラムでは初期
weak var tapFade: SKSpriteNode? = SKSpriteNode(color: UIColor.red, size: CGSize(width: 10, height: 10))
しかし、それはweak
であり、現在の参照はないので、使用する前に削除されてnil
になります。また、私のプログラムでは、私はこのようなweak SKLabelNode
を初期化:
weak var tapToBegin: SKLabelNode? = SKLabelNode(text: "Tap to Begin")
、それはSKSpriteNode
とは違って、すぐに削除されません。私はそれを使用したいとき
tapToBegin = SKLabelNode(text: "Tap to Begin")
これはないnil
SKLabelNode
をした:私はこのようにそれを使用する前SKLabelNode
を再宣言することによって、私はこれを達成方法でした。しかし、同じアプローチでSKSpriteNode
を再宣言しようとしましたが、まだそれはnil
でした。
注: initialisationsがあり、私が最初に私のプログラムでこれらのnodes
を使用する必要がどこ場所です:
class GameScene: SKScene, SKPhysicsContactDelegate {
//Initialisations are here
weak var tapFade: SKSpriteNode? = SKSpriteNode(color: UIColor.red, size: CGSize(width: 10, height: 10))
weak var tapToBegin: SKLabelNode? = SKLabelNode(text: "Tap to Begin")
override func didMove(to view: SKView) {
//I first use these nodes here
}
}
はすぐにデあることからSKSpriteNode
を防止する方法はあります初期化された?また、SKSpriteNode
がすぐに削除されるのはなぜですか?また、SKLabelNode
は削除されません。
あなたが述べたことは意味をなさない。また、私はあなたのコードを試して、両方のラベルとスプライトは即座に割り当てが解除されます。これらのノードは何も保持しないので、 'didMove(toView:)'が終了するとすぐに割り当て解除されます。あなたのコードには、そのラベルを保持するものがあります。 – Whirlwind
@ Muffinman2497の答えに対するコメントを読む。 –