Swift

【Swift】Spritekitを使う時の最小限の雛形

More than 3 years have passed since last update.


概要

iOSで2Dゲームを作るならSpritekitを使う人が多いと思います。

Spritekitでアプリを作るためにはXcodeでGameを選択し、Game TechnologyでSpriteKitを選択するのですが、これで作るといらない処理が結構入ってるんですよね(変な飛行機の絵が回転するやつとかw)

自分はゲームアプリではStoryboardも使わない派なので、邪魔だったります。

なので、Spritekitがとりあえず動くだけの最小限のテンプレート的なものを用意してきました。


AppDelegate

まず必須なのがAppDelegate。

didFinishLaunchingWithOptionsを定義しておきます。

ここではViewControllerを呼ぶ処理を記述します。


AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
let viewController: ViewController = ViewController()
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
return true
}



ViewController

AppDelegateから呼ばれます。

ViewControllerで扱うViewは通常UIViewですが、SpritekitではSkViewを指定します。

viewDidLoadメソッドでは、タイトル画面となるTitleSceneを表示する処理を行っています。


ViewController.swift

import UIKit

import SpriteKit

class ViewController: UIViewController {

override func loadView() {
// viewをSKViewに設定
let skView = SKView(frame: UIScreen.mainScreen().bounds)
self.view = skView
}

override func viewDidLoad() {
// TitleSceneを表示する
super.viewDidLoad()
let skView = self.view as! SKView
skView.ignoresSiblingOrder = true
let scene = TitleScene(size: skView.bounds.size)
skView.presentScene(scene)
}
}



TitleScene

最後にタイトル画面となるSceneです。

通常はこのSceneにスタートボタンなどを追加する、またはSceneをタップすることでゲームを開始という処理を実装していくことになると思います。


TitleScene.swift

import UIKit

import SpriteKit

class TitleScene: SKScene {
override func didMoveToView(view: SKView) {
// todo
}
}



まとめ

以上がSwiftでSpritekitを使う際の最小限の構成になると思います。

一応テンプレートはgithubにあげております。

みなさんもSpritekitで2Dゲームを作ってみましょう。