読者です 読者をやめる 読者になる 読者になる

SpriteKitのハマりどころ

iOS SpriteKit ゲームプログラミング

UIKitベースのiOSアプリの実装に慣れているiOSエンジニアにとっては、色々とハマりどころが多かったのでメモ。

UIKitとSpriteKitの違い

SpriteKitは前回のポストで解説したような構成で画面を実装していきます。
UIKitに慣れていると、SKSpriteNode、SKLabelNodeといったSKNodeのサブクラスをUIViewのサブクラスと同じような位置づけで考えて組んでしまいそうですが、 SKNodeはNSObjectのサブクラスであるため、以下のような違いがあります。

  • SKLabelNodeやSKSpriteNodeには、backgroundColor propertyが存在しない
  • UIButtonに相当するクラスがないため、ボタンのように機能するコンポーネントや、そのコンポーネントsetHighlightedなどを独自実装する必要がある。
  • UIKitベースではないため、AutoLayoutが使えない。
  • 座標系が左下原点

座標系については計算ロジックを少し変えるだけで対応できますが、残り3つについては、どう設計するか、どうデバッグするかという点に大きな違いをもたらすので、 SpriteKit向けにベストプラクティスを考える必要がありそうです。。。