4

하나의 SKSpriteNode (이름 : 정사각형) 안에 하나의 SKLabel (이름 : 레이블) 내에서 Case.sks (레벨 편집기 사용)를 만듭니다. 내 주요 장면에서, GameScene.sks, 나는 참조 용으로 "Case"와 함께 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

감사합니다. 당신은 나에게 "square"앞에 "//"을 설명 할 수 있습니까? – cmii

+2

물론 이것은 루트 노드에서 검색을 시작하고 전체 노드 트리에서 반복적으로 검색을 수행하도록 지정합니다. 그렇지 않으면 현재 위치에서 재귀 적 검색을 수행합니다. 자세한 내용은 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/doc/uid/TP40013023-CH1-SW74에서 확인할 수 있습니다. –

관련 문제