在SpriteKit SWIFT中获取SKReferenceNode的子节点

cmi*_*mii 5 sprite-kit skspritenode swift skreferencenode xcode8-beta2

我在一个SKSpriteNode(名称:square)和一个SKLabel(name:label)中创建了一个场景Case.sks(使用Level Editor).在我的主场景GameScene.sks中,我使用带有"Case"的SKReferenceNode作为参考.

我需要从我的主场景中访问"方形"精灵.

我的第一个想法是直接调用子节点:

 let firstSquare = childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

 let caseRef = childNode(withName: "Case") as! SKReferenceNode
 let firstSquare = caseRef.childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了第一个广场线:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

如何获取参考场景的子节点?

Ale*_*ano 9

尝试使用此代码调用它:

override func sceneDidLoad() {
     if let sprite = self.childNode(withName: "//square") as? SKSpriteNode {
           // do whatever you want with the sprite
     }
     ...
}
Run Code Online (Sandbox Code Playgroud)

  • 当然,这指定搜索应该从根节点开始,并在整个节点树上递归执行.否则,它从当前位置执行递归搜索.您可以在此处找到更多详细信息:https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/doc/uid/TP40013023-CH1-SW74 (3认同)