J'utilise SpriteKit dans une application iOS, et j'essaie d'initialiser la propriété camera
de mon SKScene dans la méthode didMoveToView
surchargée. Si je viens de l'initialiser comme ceci:SpriteKit SKCameraNode - Nil lors du déballage d'une valeur optionnelle juste après avoir affecté
override func didMoveToView(view: SKView) {
...
self.camera = SKCameraNode()
self.addChild(self.camera!)
}
... il jette l'exception unexpectedly found nil while unwrapping an Optional value
à la ligne self.addChild
, mais si je fais ceci:
override func didMoveToView(view: SKView) {
...
let camera = SKCameraNode()
self.camera = camera
self.addChild(self.camera!)
}
... il fonctionne très bien, aucune exception . Pourquoi ces deux façons sont-elles différentes? Y a-t-il une sorte de collecte des déchets? Ce n'est pas gênant d'utiliser le deuxième format, cela fonctionne, mais je suis curieux de savoir ce qui diffère que je suis manquant.
Pouvez-vous nous montrer comment vous déclarez votre caméra dans le premier cas s'il vous plaît? – H4Hugo
Voilà, j'ai supposé que la variable facultative 'camera' dans le SKScene (' self' se réfère ici à une sous-classe SKScene) pouvait être initialisée et que cette référence protégerait l'objet caméra de la récupération de place. 'self.camera' est déclaré dans les fichiers SKScene dans SpriteKit. – jaxuru