創建一個新的swift文件並將其命名爲與.sks文件相同。假設您有一個名爲MainMenu.sks
的.sks文件。您會創建一個名爲MainMenu.swift
的快速文件。在該文件中,您需要創建一個繼承自SKScene
的Main Menu類。
import SpriteKit
class MainMenu: SKScene {
}
裏面有你會把你的所有代碼。正如你所說的,關鍵是將它鏈接到.sks文件。
當你去演示你的場景時,你將實例化這個類並將它與.sks文件關聯起來。
import UIKit
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let scene = MainMenu(fileNamed:"MainMenu") {
let skView = self.view as! SKView
// Some settings applied to the scene and view
// ... code ...
skView.presentScene(scene)
}
}
//... other code
}
注行let scene = MainMenu(fileNamed:"MainMenu")
。那就是你實例化你在MainMenu.swift.
中創建的類的地方所以,在技術上,MainMenu()
是.swift
文件,而fileNamed: "MainMenu"
是.sks
文件。您可以在技術上將任何.sks
文件放入init調用中,並且它將渲染該場景。
想象一下,擁有一個迷宮亞軍的所有邏輯的遊戲。您可以在一個名爲MazeScene
的類中構建所有遊戲邏輯,並製作一組.sks
文件,每個文件都有不同的迷宮。那麼你可以這樣,MazeScene(fileNamed: "MazeOne")
或MazeScene(fileNamed: "MazeThree")
。
有關此文檔,SKScene從SKNode繼承,所以你會發現init(fileNamed:)
here
這應該讓你去的文檔。
旁註:我在使用場景編輯器時也遇到很多崩潰。這對於一些溫和的設計工作很好,但我發現自己在代碼中完成所有更詳細的工作。 –
爲什麼它「重寫func viewDidLoad()」不是「重寫func didMoveToView(view:SKView)」? –
這是根視圖控制器。每個SpriteKit遊戲至少有一個。如果你在一個'SKScene'實例中做這個,你可以做一些類似'self.view!.presentScene(scene,transition:transition)'的地方,其中'scene'是'let scene = MainMenu(fileNamed:「MainMenu」) ' –