2016-08-07 10 views
4

1つのSKSpriteNode(名前:正方形)と1つのSKLabel(名前:ラベル)の内側に、Case.sks(レベルエディタを使用)を作成します。 私のメインシーンでは、GameScene.sks、私は参照のために "ケース"とSKReferenceNodeを使用します。SpriteKitのSKReferenceNodeの子ノードを取得するSWIFT

メインのシーンから「正方形の」スプライトにアクセスする必要があります。

私の最初のアイデアは、子ノードを直接呼び出すことだった:

let firstSquare = childNode(withName: "square") as! SKSpriteNode 

しかし、私は得た:

Fatal error: unexpectedly found nil while unwrapping an Optional value 

は、だから私が試した:

let caseRef = childNode(withName: "Case") as! SKReferenceNode 
let firstSquare = caseRef.childNode(withName: "square") as! SKSpriteNode 

しかし、私はfirstSquareに乗りました行:

Fatal error: unexpectedly found nil while unwrapping an Optional value 

リファレンスシーンの子ノードを取得する方法はありますか?

+0

? initモードから(おそらくあなたのシーンは自分の子を取得する準備ができていません)、またはdidMoveToViewからですか? –

+0

GameScene.swiftのsceneDidLoad()から – cmii

+0

この回答を見て、それが動作すれば教えてください。 –

答えて

6

は、このコードでそれを呼び出すようにしてください:あなたは、このコードを呼び出すん

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

ありがとうございます。あなたは私に "正方形"の前に "//"を説明できますか? – cmii

+2

これは、ルートノードで検索を開始し、ノードツリー全体で再帰的に検索を実行することを指定します。それ以外の場合は、現在の位置から再帰的な検索を実行します。詳細はこちらをご覧ください:https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/doc/uid/TP40013023-CH1-SW74 –

関連する問題