シンプルなSpriteKitの始め方
はじめに
Gameでプロジェクトを作成するとGameScene.sksとActino.sksファイルが作成されてしまいます。GameScene.sksを使ってアプリを作成している知り合いの話によると結構な確率でXcodeが落ちてしまうのであまりよろしくないそうです。
そこで私がSpriteKitでゲームを作成する際のシンプルなSpriteKit導入方法をまとめます。
コード
AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = ViewController()
self.window?.makeKeyAndVisible()
return true
}
ViewController
class ViewController: UIViewController {
override func loadView() {
let skView = SKView(frame: UIScreen.main.bounds)
self.view = skView
}
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
skView.ignoresSiblingOrder = true
let size = CGSize(width: skView.bounds.size.width, height: skView.bounds.size.height)
let scene = TitleScene(size: size)
skView.presentScene(scene)
}
}
これだけです!あとはSceneをいくつか作成しViewController上で切り替えながらゲームを作成していきます。
便利なExtension
UIKitでアプリを作るときも同じですが、レイアウトをコードで生成する際それぞれのviewやnodeに対してaddSubViewやaddChildを行う必要があります。以下のようなextensionを作成しておくと1行にまとめられるので便利です。
extension SKScene {
func addChild(_ nodes: SKNode...) {
nodes.forEach({addChild($0)})
}
func addChild(_ nodes: [SKNode]...) {
nodes.forEach({$0.forEach(addChild(_:))})
}
}