내 스프라이트 키트 프로젝트에는 지상 physicsBody 및 배경 그래픽이 포함 된 장면 .sks 파일이 있습니다. 장면이이 파일에서로드됩니다. 또한 container라는 빈 노드가 있습니다. 블록과 적을 포함하는 각 레벨마다 다른 .sks 파일이 있습니다. 내 장면을 초기화 할 때 내 수준 .sks 파일 중 하나에서 수준을로드하고 (SKScene을 SKNode로 캐스팅) 빈 "컨테이너"노드에 추가합니다.SpriteKit은 한 노드의 자식을 다른 노드에 추가합니다.
import SpriteKit
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(SKNode.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKNode
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}
class GameScene: SKScene {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.childNodeWithName("//container")?.addChild(SKNode.unarchiveFromFile("level1")!)
}
override class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}
그러나이 노드 계층 구조에 빈되지 않는 노드가 있음을 의미 : 나는이 코드를 사용
Scene
-background
-ground
-container
--level scene(cast to SKNode) <- empty node here
---block
---enemy
그래서 내 질문은 : 어떻게 하나 개의 노드의 아이들이 다른 추가하는 방법은 무엇입니까?
-I 직접 내가이 (안된) 트릭을 할해야
감사합니다 - 그것 빠른에 포트에 쉽게해야하고, 스프라이트 키트는 일부 부품에서 cocos2d와 매우 유사합니다. – Okapi