iOSアプリケーションでSpriteKitを使用し、オーバーライドされたdidMoveToView
メソッドのSKSceneのcamera
プロパティを初期化しようとしています。私はちょうどので、同じようにそれを初期化する場合:SpriteKit SKCameraNode - 割り当て直後の任意の値をアンラップするときのNil
override func didMoveToView(view: SKView) {
...
self.camera = SKCameraNode()
self.addChild(self.camera!)
}
を...それは、self.addChild
ラインで例外unexpectedly found nil while unwrapping an Optional value
をスローしますが、私はこれを行う場合:
override func didMoveToView(view: SKView) {
...
let camera = SKCameraNode()
self.camera = camera
self.addChild(self.camera!)
}
を...それは例外で、正常に動作しません。なぜこれらの2つの方法が異なるのですか?ガベージコレクションが起こっていますか? 2番目のフォーマットを使用するのに不便はありませんが、それは私が見逃していることとは何か違っています。
最初のケースでカメラを宣言する方法を教えてください。 – H4Hugo
これは、SKScene(ここでは 'self'はSKSceneサブクラスを参照します)の' camera'オプション変数を初期化でき、その参照がカメラオブジェクトをガベージコレクションから保護すると仮定しました。 'self.camera'はSpriteKit内のSKSceneファイルで宣言されています。 – jaxuru