使用场景编辑器获取 SKSpriteNode 的 userData

Posted

技术标签:

【中文标题】使用场景编辑器获取 SKSpriteNode 的 userData【英文标题】:get userData of SKSpriteNode using the scene editor 【发布时间】:2016-10-06 19:32:51 【问题描述】:

我在场景编辑器中设置了我的 SKSpriteNode 的 userData:

然后我试图得到它,使用:

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

但我得到了 nil 值:“致命错误:在展开可选值时意外发现 nil”

我还尝试使用以下方法初始化 userData:

sprite.userData? = NSMutableDictionary()

但结果相同...

【问题讨论】:

你保存了场景编辑器吗? @Knight0fDragon 的意思是说 Xcode 中的场景编辑器中有一组众所周知的异常——它们不像 Xcode 中的其他所有东西那样自动保存。保存场景,同时在场景编辑器中(对于某些属性)以它们按预期工作的方式将它们传播到存储中......有时。 【参考方案1】:

你的精灵也可能是 nil:

尝试使用可选绑定(如果让)和 sprite 之前的“//”来搜索您的 sprite。

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。

【讨论】:

以上是关于使用场景编辑器获取 SKSpriteNode 的 userData的主要内容,如果未能解决你的问题,请参考以下文章

Xcode7场景编辑器SKSpriteNode自定义类

如何获取场景中不可见的 SKSpriteNode 的节点数?

SKScene - 如何从 SKSpriteNode 获取类

如何通过physicsBody获取SKSpriteNode?

如何使用该节点的自定义类检测在单独场景中创建的 skspritenode 上的触摸

SpriteKit:向场景中添加多个 SKSpriteNode