シンプルな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(_:))})
    }
}

前の記事

iosアプリリリース手順