Я понял, способ сделать это:
- 1) Создать файл SKS под названием tilemaps
- 2) Создать все свои карты в там
3) Добавить это расширение для загрузки что файл сцены в текущей сцене:
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = Bundle.main.path(forResource: file as String, ofType: "sks") {
let sceneData = NSData(contentsOfFile: path)
let archiver = NSKeyedUnarchiver(forReadingWith: sceneData as! Data)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObject(forKey: NSKeyedArchiveRootObjectKey) as! SKNode
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}
Затем возьмите карту плитки из файла sks. Weird Хитрость заключается в том, что вы должны удалить его от родительского первого:
guard
let tileScene = SKScene.unarchiveFromFile(file: "TileMaps"),
let testMap = tileScene.childNode(withName: "Dungeon1")
as? SKTileMapNode else {
fatalError("Background node not loaded")
}
self.testMap = testMap
self.testMap.removeFromParent()
self.testMap.zPosition = 1200
self.addChild(testMap)
Это [сообщение] (http://stackoverflow.com/questions/39533705/programmatically-create-sktilemapnode-in-swift/39544119#39544119) обсуждает, как создать карту с существующим набором плиток, созданным в редакторе. –
Этот [post] (http://stackoverflow.com/questions/41352251/what-is-the-proper-way-to-programmatically-create-a-spritekit-sktilemap/41434435#41434435) обсуждает, как создавать оба набора и карту. –
Я понял способ сделать это, сначала добавьте это расширение: – Negora