.sks
文件是場景內容的靜態存檔。如果您以前使用過Interface Builder來設置UI應用程序,那麼它的思路也是一樣的,如果在實現上有所不同的話。
在UI的應用程序,你可以在代碼中所做的一切:
override func viewDidLoad() {
let someText = UITextField(...)
let aButton = UIButton(...)
// ... position everything
// ... style everything
// ... etc ...
}
或者你可以做IB所有的靜態內容設置(一XIB或情節串連圖板),並且只用於建立動態使用代碼你的應用程序的行爲 - 當有人開始觸摸這些按鈕時發生的事情。當你這樣做時,你編寫代碼的視圖控制器作爲代理對象存在於xib/storyboard中,在你在IB中設置的內容和代碼中設置的內容之間架起一座橋樑。
在SpriteKit中,您有相同的選擇。 Xcode的6之前,許多SK遊戲把所有的代碼方法:
override func didMoveToView(view: SKView) {
let player = PlumberSprite(color: .Red)
player.position = // ...
player.physicsBody = // ...
self.addChild(player)
let ground = SKSpriteNode(...)
ground.position = // ...
ground.physicsBody = // ...
self.addChild(ground)
let block = QuestionBlockSprite()
block.position = // ...
block.physicsBody = // ...
block.contents = CoinSprite()
self.addChild(block)
// ... etc etc etc ...
}
這是一個很大的什麼是最終的圖形,靜態場景碼 - 你開始添加代碼,使之成爲一個遊戲,甚至之前(輸入處理,敵人的行爲,增加分數或去遊戲結束的物理回調等)。而且它不適合設計從內容中分離出一般遊戲邏輯的地方,因此很難在遊戲中添加多個關卡。相反,您可以使用Xcode中的SpriteKit編輯器來構建您的靜態內容(級別),並堅持用於動態行爲和遊戲邏輯的代碼。就像在IB中視圖控制器是你的故事板和你的代碼之間的橋樑一樣,你的場景類(模板中的GameScene.swift
)是編輯器和代碼之間的橋樑。當您在運行時加載.sks
文件(代碼爲模板中的GameViewController.swift
)時,它將成爲GameScene
類的一個實例,您在編輯器中設置的任何內容都可以作爲場景的子節點進行訪問。
檢查WWDC會談是一個好主意,但是您錯過了一個涵蓋此內容的主題:請參閱session 608: Best Practices for Building SpriteKit Games以獲取更多關於SpriteKit編輯器背後的動機,如何使用它以及如何處理從您場景代碼中的.sks
文件。
非常好!該視頻的前20分鐘正是我需要的! – 2014-11-05 23:00:55
我發現.sks文件有一點限制。它有時似乎會丟失我添加的對象,有時它會恢復我所做的更改(模擬與編輯模式)。沒有圖層視圖,我不知道這個.sks文件是多麼有用,除非Apple添加更多功能。您必須向前和向後推節點才能處理複雜的層次結構。 – 2015-01-28 17:01:53