2017-01-17 8 views
0

Я создаю свои программные комплекты спрайтов программно, и файлы sks в конечном итоге меня просто сбивают с толку.Создать/загрузить SKTilemapnode без использования файлов SKS/Сцены

Есть ли способ загрузить или создать узел карты плитки без использования файла sks/scene?

+0

Это [сообщение] (http://stackoverflow.com/questions/39533705/programmatically-create-sktilemapnode-in-swift/39544119#39544119) обсуждает, как создать карту с существующим набором плиток, созданным в редакторе. –

+1

Этот [post] (http://stackoverflow.com/questions/41352251/what-is-the-proper-way-to-programmatically-create-a-spritekit-sktilemap/41434435#41434435) обсуждает, как создавать оба набора и карту. –

+0

Я понял способ сделать это, сначала добавьте это расширение: – Negora

ответ

1

Я понял, способ сделать это:

  • 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) 

 Смежные вопросы

  • Нет связанных вопросов^_^