получить userData SKSpriteNode с помощью редактора сцен

Я установил userData моего SKSpriteNode в редакторе сцен:

введите здесь описание изображения

Затем я попытался получить его, используя:

let sprite:SKSpriteNode = self.childNode(withName: "sprite") as? SKSpriteNode
let numero:Int = sprite.userdata?.valueForKey("numero") as! Int

Но я получил нулевое значение: «фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения»

Я также попытался инициализировать userData с помощью:

sprite.userData? = NSMutableDictionary()

Но тот же результат...


person cmii    schedule 06.10.2016    source источник
comment
ты сохранил редактор сцен?   -  person Knight0fDragon    schedule 06.10.2016
comment
под которым @Knight0fDragon имеет в виду, что в редакторах сцен в Xcode есть достаточно известный набор аномалий - что они не сохраняются автоматически, как почти все остальное в Xcode. Сохранение сцены в редакторе сцен (для некоторых свойств) распространяет их в хранилище таким образом, что они работают как задумано... иногда.   -  person Confused    schedule 07.10.2016


Ответы (1)


Вероятно, ваш спрайт также равен нулю:

попробуйте найти свой спрайт с дополнительной привязкой (если разрешено) и "//" перед спрайтом.

if let sprite = self.childNode(withName: "//sprite") as? SKSpriteNode {
       let numero:Int = sprite.userdata?.valueForKey("numero") as! Int
} else {
   print("I cannot find sprite..")
}

Он выполняет рекурсивный поиск из своей текущей позиции. Ознакомьтесь со справкой по API здесь .

person Alessandro Ornano    schedule 07.10.2016