2015-02-23 58 views
7

我看到在XCode 6中有一個內置的編輯器。我找不到很多關於如何使用它或它如何工作的文檔,但是我能夠弄清楚如何使用它來製作SKSpriteNodes,然後使用childNodeWithName()將它們鏈接到.swift文件。當您創建一個新的SpriteKit項目時,它將以GameScene.swift和GameScene.sks開頭。我可以使用這些來創建一個可視化級別,然後我可以在GameScene.swift中對其進行編碼,但是當我嘗試將自己的.sks和.swift文件創建爲新的級別時,我無法連接.sks和我製作的.swift文件。我試圖準確地遵循下面這個教程:如何將.sks文件鏈接到SpriteKit中的.swift文件

http://www.techotopia.com/index.php/An_iOS_8_Swift_Sprite_Kit_Level_Editor_Game_Tutorial#Creating_the_Archery_Scene

當我連接的兩個文件中沒有錯誤來了,然後當我轉移到它正確移轉現場,但什麼,我在視覺上加入.sks顯示在模擬器中。請幫忙,我花了數小時研究解決方案。我能夠找到關於關卡編輯器的極少數教程和論壇只討論了以新SpriteKit項目開始的GameScene.swift和.sks。

+0

你可以在哪裏實例化新SKScene並向其轉換時顯示代碼? – rakeshbs 2015-02-24 05:19:55

+0

[SpriteKit模板中的GameScene.swift和GameScene.sks文件之間有什麼關係](http://stackoverflow.com/questions/26765573/whats-the-relationship-between-gamescene-swift-and-gamescene- sks-files-in-sprit) – rickster 2015-02-26 02:31:37

回答

5

此方法將取消存檔sks文件並將其初始化爲調用它的SKNode子類。這意味着您可以將文件解壓縮爲SKNode(因此根節點將成爲SKNode)並將其作爲子節點添加到場景中。您也可以將文件解壓縮爲GameScene或任何SKNode子類。

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(self.classForKeyedUnarchiver(), forClassName: "SKScene") 
      let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKNode 
      archiver.finishDecoding() 
      return scene 
     } else { 
      return nil 
     } 
    } 
} 

使用方法如下:

let scene = GameScene.unarchiveFromFile("GameScene")! as GameScene 

let levelStuff = SKNode.unarchiveFromFile("Level 1")! 
self.addChild(levelStuff) 
+0

如果我的問題已經被回答,我很抱歉。我確實閱讀過那個由rickter鏈接的論壇帖子,但這並不是我一直在尋找的。我使用了: let levelStuff = SKNode.unarchiveFromFile(「Level 1」)! self.addChild(levelStuff) 將節點從我的.sks添加到我的場景中。我現在可以使用代碼控制可視化添加的節點。我打算使用它來製作靜態平臺,然後使用代碼添加我的「英雄」。 非常感謝你幫助我,這是一個簡單的解決方案,現在我可以輕鬆地爲我製作的遊戲製作和設計新的關卡。 – 2015-02-27 04:12:54

+1

此外,這是我第一次使用任何類型的論壇EVER,所以我很抱歉,如果我沒有做他們應該做的事情 – 2015-02-27 04:18:00

+0

如果這個答案解決了你的問題,你會考慮接受它(點擊綠色的勾號) – Okapi 2015-02-27 18:28:01

2

通過這個答案的時間(的Xcode 8.2.1)做它的 '簡單' 的方法是: 在Project Navigator中選擇.sks文件,以便顯示圖形編輯器。然後進入Utilities Area(Right Side),在「Custom Class Inspector」標籤下; 「自定義類」字段中,在.swift文件中鍵入類的名稱。

+0

謝謝,但這不能爲ShapeNode完成。以防萬一有人想要這樣做。 – user431791 2017-04-06 10:57:51

相關問題