У меня есть этот код в SKScene: «есть»SpriteKit childNodeWithName не может найти существующий узел
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
var touch: AnyObject = touches.anyObject()
var point = getPoint(touch.locationInNode(self))
var name = NSStringFromCGPoint(point)
for children in self.children {
if (children as SKSpriteNode).name == name {
println("exist!")
}
}
var tempNode = self.childNodeWithName(name)
}
я вижу в журнале, так что в дочернем массиве есть узел с этим именем, но tempNode is nil. Вызов self.childNodeWithName("//" + name)
возвращает ноль тоже.
childNodeWithName всегда сбой с фатальной ошибки: неожиданно обнаружил ноль, а разворачивание необязательное значение –
Это может быть связано с несколькими вещами. Там может быть опечатка в строке имени или нужный вам узел, возможно, еще не был инициализирован или, возможно, уже был удален при вызове childNodeWithName. Необязательная цепочка - хороший способ защитить от этого. Попробуйте следующее: 'if let mySprite = childNodeWithName (" mySprite ") { // Сделайте что-то с узлом }' –