2015年7月2日木曜日

SpriteのゲームはSpriteKitレベルエディタで作ろう

UIViewを使うアプリの画面デザインをするのには、InterfaceBuilderから続くエディタを使うけど、SpriteKitを使うアプリには最初そういうのがなかった(と思う)。
でもXcode6くらいからSpriteKitエディタが付いて、WYSIWYGなグラフィカルな画面デザインができるようになった。
(エディタの正式な名前がよくわからなかったのだが、SpriteKit Level Editorというらしい)

SpriteKitを使ってプロジェクトを作り、拡張子に.sksが付いてるファイルを開けばエディタが開く。
以下のはもう部品を配置したものだが、一般的なSprite(Color Sprite)、照明効果のLight、UILabelのSprite版、パーティクルのEmitterなど、ひと通りのものが右下からドラッグして配置できる。
デフォルトだと画面サイズがなぜか正方形になっちゃうんで(各種iPhone、iPad全てに対応させる概念からだと思うが、まだよくわからん)、必要であればインスペクタのSizeで変えてやるといい。

細かい使い方はUIView用のInterfaceBuilderに準じてるからわかるだろう。
コードからこのエディタで作った画面は、SpriteKitでプロジェクトを作った時のテンプレートとしてGameViewControllerに書かれてくるunarchiveFromFileメソッドで表示している。

実際のゲームの内容はGameSceneの中に書くのだが、エディタに配置したSpriteはInterfaceBuilderみたいにクラスにcontrol+ドラッグ(もしくは右ボタン+ドラッグ)でプロパティを作ることができないので、簡単なコードで認識させる。

あらかじめエディタの方で各SpriteにNameを付けておき、コードの中で以下のようにすればInterfaceBuilderのOutletに相当するものが得られる。
   let barLong = childNodeWithName("barLong")
   var powerGauge = childNodeWithName("powerGauge") as! SKSpriteNode
上のように単にOutlet接続しただけでは、クラスはSKNodeになるようだ。
そこで、SKSpriteNodeのいろんなメソッド、プロパティを使う際は下のように「as!」を使ってSKSpriteNodeにキャストしてやる。

このように、SKNodeのようなスーパークラスを派生クラスSKSpriteNodeにキャストすることを、ダウンキャストと言う。


まだ使い方でわかってないことも多いので、わかったら追記する。

SpriteKit Level Editorについて書かれたページ
[iOS 8] SpriteKit でミニゲームをつくる #5 画面パーツ配置
An iOS 8 Swift Sprite Kit Level Editor Game Tutorial

0 件のコメント:

コメントを投稿