【SpriteKitで始める #1】プロジェクト作成編
こんにちは、@Yuuです。
前回の第0回では、SpriteKitとはどんなものか、どのような事を考えて作るのか、について書きました。
第1回の今回は、これから複数回解説を行う際のベースとなるプロジェクトファイルの作り方を解説します。ここで作るプロジェクトをベースに今後のファイルを作るので、しっかり作っていきましょう!
スポンサーリンク
解説を行う環境
今回僕が解説を行う環境です。
- OS:OS X Yosemite10.10.5
- Xcode:7.1
Xcodeのバージョンが7以降なのでSwift2での解説になります。 Swift(無印)でも書き方はほぼ一緒だと思いますが、違う場合はご了承下さい。
基本となるプロジェクトを作成する
では早速基本となるプロジェクトを作っていきたいと思います。
今回行う作業は大まかに以下の4つを行います。
- 新規プロジェクトの作成
- View Controllerの設定
- Sceneの設定
- View ControllerからGame Sceneを呼び出す
です。
では順番に解説していきます。
1. 新規プロジェクトの作成
Xcodeのメニューバーから
File -> New -> Project..
を選択し、新しいプロジェクトを作成していきます。
SpriteKitは、そもそもゲームを作るフレームワークです。
Xcodeには新規プロジェクトを作成する際に「Game」という項目があります。ですが、今回は「Single View Application」を選択します。
「Game」という項目があるのになぜ選択しないかというと、「Game」を選択してしまうと様々なファイルを自動的に生成してくれてしまうからです。
逆に「Single View Application」はほぼ何もない状態からプロジェクトを作っていきます。
確かに「Game」を選択した場合は、様々なファイルを自動的に生成してくれるので非常に便利ではあります。ですが、初めてプロジェクトを作る際には、1から作る方が覚えると思うので、今回は「Single View Application」でまっさらな状態から始めてみましょう!
プロジェクト名は以下のように「GameSample01」というプロジェクト名にしましたが、ここは好きな名前にして頂いて構いません。
また、この後に設定するプロジェクトを保存するフォルダも好きな場所で構いません。
2. View Controllerの設定
プロジェクトの作成が完了したら「Main.storyboard」を開いて下さい。
するとView Controller内に「View」と書かれた項目があります。
こちらのViewを選択し右側のサイドバーのShow the Identity inspectorというタブ項目から
Custom Class -> Class
内に「SKView」と記載します。
次にViewController.swiftファイルの編集を行います。
ViewController.swiftを開いてimport UIKit
と書かれているすぐ下にimport SpriteKit
と記載します。
そしてviewDidLoad()
内にコードを追記し、viewDidLoad()
を以下のように変更します。
1 2 3 4 5 6 7 8 9 |
override func viewDidLoad() { super.viewDidLoad() let skView = self.view as! SKView // FPSの表示 skView.showsFPS = true // Nodeの数を表示 skView.showsNodeCount = true } |
6行目のskView.showsFPS
や8行目のskView.showsNodeCount
はFPSの表示、Nodeの数の表示を行うためのものなのですが、詳しい説明は後述しますね。
ここまで行った後のViewController.swiftの全文は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import UIKit import SpriteKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let skView = self.view as! SKView // FPSの表示 skView.showsFPS = true // Nodeの数を表示 skView.showsNodeCount = true } } |
上記のコードでは、プロジェクトを作った時に自動的に作られるdidReceiveMemoryWarning()
というメソッドは使用しないので削除してあります。
ここまででViewController.swiftでの作業は一旦終了です。
3. Sceneの設定
次にSceneを追加します。
Sceneて何なんだよ!?という方は第0回の記事の「ゲームの遷移にはSceneを使う」という辺りを読んでみて下さい。
今回追加するSceneの名前は「GameScene」という名前にしたいと思います。
ファイルを追加するので、メニューバーから
File -> New -> File...
と選択するか、下記画像のようにサイドバーのGameSample01というフォルダの上で右クリックをして「New File...」という項目を選択して下さい。
制作するファイルの種類を選択する画面で「Swift File」を選択します。
ファイル名に「GameScene.swift」と付け、createボタンを押してファイルを作成します。
作成したGameScene.swiftを選択し、まずファイルを作成した時に自動的に書かれているコードを全て削除しちゃいましょう。
そして以下のコードをまるっとコピーして貼り付けて下さい。
1 2 3 4 5 6 7 8 9 10 11 |
import SpriteKit class GameScene: SKScene { /// Sceneが表示された時に呼ばれる override func didMoveToView(view: SKView) { // Sceneが呼ばれた時の処理を記載する } } |
6行目のdidMoveToView(view: SKView)
というメソッドが、GameScene
が呼び出され最初に実行されるメソッドです。
今回は「// Sceneが呼ばれた時の処理を記載する」というコメントアウトしか書いていませんが、今後はここに様々な処理を書いていきます。
ここまでの処理を行ったプロジェクトの画像を一応貼っておきますね。
4. View ControllerからGame Sceneを呼び出す
最後にViewControllerを起動した時にGameSceneを呼び出す設定を記述します。
追記した後のViewController.swiftは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import UIKit import SpriteKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let skView = self.view as! SKView // FPSの表示 skView.showsFPS = true // Nodeの数を表示 skView.showsNodeCount = true // viewと同じサイズのGameSceneを作成 let scene = GameScene(size: skView.bounds.size) // viewにsceneを表示 skView.presentScene(scene) } } |
追加したのはハイライトしている15~18行目です。
コメントアウトにも書いていますが、16行目でGameSceneを作成し、18行目でviewに表示するように設定しています。
ここまで記述が出来たら起動してみましょう!
起動後、以下のように真っ黒な画面が表示されれば成功です。
ほぼ真っ黒で何も表示されていませんが、ちゃんとGameSceneが呼ばれているはずなので安心して下さいね。
すごく分かりづらいかと思うのですが、画面右下に
nodes:1 60.0 fps
と表示されているのが分かるでしょうか?
(画像を縮小して表示しているので、クリックして拡大表示すると多少見やすくなるかと思います)
「nodes:1」というのは、画面に表示されているNodeが1個あるよ!
という意味です。
SceneもNodeの1つと換算されるようで(以前はSceneは数に入らなかったと思います)、「nodes:1」と表示されています。
このNodeの数を表示する設定は、先ほどのコードの13行目に書かれているskView.showsNodeCount = true
という一文です。
ここをskView.showsNodeCount = false
とすることで、Nodeの数を非表示にすることが出来ます。
次に「60.0 fps」というのは、1秒間に画面を更新する回数が60回だよ!
という意味です。
fpsの値を表示する設定は、先ほどのコードの11行目skView.showsFPS = true
になります。
fpsの値を表示しないようにするには、skView.showsFPS = false
とすることで、fpsの値を非表示にする事が出来ます。
ここまでで、今後のベースとなるプロジェクトの作成は終了です。
お疲れ様でした。
今回作成したGameSample01というプロジェクトは、GitHubにも上げてありますので、もしよろしければ以下のリンクより参考にしてみて下さい。
あとがき
いかがでしたでしょうか?
今回の記事だとSpriteKitが難しいんだか簡単なんだか、まだサッパリですよね。
次回から様々なNodeを使って、文字を表示したり物体を表示してみたいと思います。
SpriteKit#2の記事は、2015年12月下旬公開予定です。
SpriteKit#2の記事書きました!
【SpriteKitで始める #2】SKLabelNode
ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧