2016-10-06 2 views
3

я установить USERDATA моего SKSpriteNode в редакторе сцены:получить USERDATA из SKSpriteNode с помощью редактора сцены

enter image description here

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

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

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

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

sprite.userData? = NSMutableDictionary() 

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

+1

Вы сохранили редактор сцены? – Knight0fDragon

+0

, с помощью которого @ Knight0fDragon означает сказать, что в Xcode есть достаточно известный набор аномалий в редакторах сцен, - что они не автосохранятся, как и все остальное в Xcode. Сохранение сцены, в то время как редактор сцены (для некоторых свойств) распространяет их на хранение так, чтобы они работали по назначению ... иногда. – Confused

ответ

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 here.

Смежные вопросы