创建一个新的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”) ' –