SKView

プロパティ

非同期的にレンダリングするかどうか

asynchronous

BOOL
初期値 YES

NOが設定されるとビューの内容はCore Animationの更新と同期します。

シーンを更新するフレームの間隔

frameInterval

NSInteger
初期値 1

初期値の1はゲームがディスプレイのリフレッシュレートで更新されることになります。
1より大きな値が設定されると、元々のリフレッシュレートをその数で分割して更新されます。
初期設定時にフレームレートが60FPSの場合、インターバルに2を設定するとシーンの更新が1フレームおきに実行されるため、フレームレートは半分の30FPSになります。

ノードの親子関係と兄弟関係がノードがレンダリングされる順番に影響を与えるかどうか

ignoresSiblingOrder

BOOL
初期値 NO

初期値のNOは複数のノードが同じZオーダーを持つ時、それらのノードは決まった順番で並び替えられてレンダリングされます。
親ノードは子ノードのまえにレンダリングされ、兄弟間は古いものから新しいものへ順にレンダリングされます。
このプロパティがYESの時はレンダリングの順番でノードツリー上での位置が無視されます。
同じZオーダのノードをレンダリングする順番は決まったおらず、新しいフレームがレンダリングされる時に変わる可能性があります。
兄弟親子順を無視する設定がされると、レンダリングはパフォーマンスを向上させるため最適化されます。
特定の決まった順でレンダリングさせたい場合、必ずZオーダーを設定する必要があります。

シーンのアニメーションが休止中かどうか

paused

BOOL

値がYESの時、シーンの内容は停止しています。どのアクションも物理シミュレーションもおこなわれていません。

ビューに表示されている現在のシーン(読み込みのみ)

scene

SKScene*

描画処理数をビューに表示するかどうか

showsDrawCount

BOOL

いくつかのSprite Kitの処理はシーンの内容を描画するために複数のレンダリング処理を必要とします。
例えば、SKEffectNodeオブジェクトはその子ノードを別のバッファへ格納し、そこにエフェクトを適用し、その結果を親ノードにブレンドする、という複数の処理を実行します。
レンダリング処理が増えるとより多くのリソースを必要とし、ゲームのフレームレートを減らしたり、全体の負荷を増やしたりします。
ゲームのパフォーマンスを調べるデータの1つとして描画処理数の表示をお使いください。

フレームレートを表示するかどうか

showsFPS

BOOL

フレームレート(1秒あたりの描画フレーム数。単位はFPS)はシーンのパフォーマンスを評価する良い指標となります。フレームレートが大きく変化してしまうようなシーンの作成処理を避けましょう。

シーンに見えているノード数を表示するかどうか

showsNodeCount

BOOL

物理処理に関連したデバッグ情報を表示するかどうか

showPhysics

BOOL

このオプションを有効にすると、フレームのレンダリングの際に、シーンの手前にオーバーレイ画像(ノードの位置がわかりやすいように点が描画される)が表示され、ノードに設定された物理体の形状のラインが描画されます。

シーンを表示する

シーンを表示する

- (void)presentScene:(SKScene *)scene

scene 表示するシーン(SKSceneのオブジェクト)

新しいシーンは即座に現在のシーンと置き換わります。(すでにシーンが表示されている時)

現在のシーンから新しいシーンへ切り替えて表示する

- (void)presentScene:(SKScene *)scene transition:(SKTransition *)transition

scene 表示するシーン(SKSceneのオブジェクト)
transition 2つのシーン間を切り替えるアニメーション

ビュー上にシーンが存在する場合、ビューのsceneプロパティはすぐに更新され、シーンを入れ替えるアニメーションが実行されます。
ビュー上にシーンが無い場合、シーンは即座に表示され、transitionの値は無視されます。

コード例

[self.view presentScene:scene1 transition:transition1];

シーンを画像として取得する

ノードの画像のテクスチャを取得する

- (SKTexture *)textureFromNode:(SKNode *)node

node テクスチャとしてレンダリングしたいノード

ノードはビューの現在のシーンとして表示されている必要はありません。
作成されるテクスチャはノードのcalculateAccumulatedFrameメソッドで返される矩形サイズと同じ大きさで作成されます。
ノードがシーンノードでない場合、背景は透明色([SKColor clearColor])でレンダリングされます。

座標系を変換する

シーン座標からビュー座標へ座標を変換する

- (CGPoint)convertPoint:(CGPoint)point fromScene:(SKScene *)scene

point シーン座標系における座標点
scene シーン(SKSceneのオブジェクト)

ビュー座標からシーン座標へ座標を変換する

- (CGPoint)convertPoint:(CGPoint)point toScene:(SKScene *)scene

point ビュー座標系における座標点
scene シーン(SKSceneのオブジェクト)