4

最初のビュー コントローラーに を含む 2 つの異なるビュー コントローラーがありSKSceneます。そこにはゲーム自体があり、2 番目のゲームには「リプレイ」ボタンのあるスコアが表示されます。ゲームが終了したら、ユーザーが「リプレイ」をクリックすると、シーンを削除し、alloc再びinitシーンを削除します。私の問題はSKSpriteNode、ゲームが終了したときに特定のものが回転した場合、それを削除してリセットした後、そのシーンに戻ると、シーンを削除する前とまったく同じ角度で回転したままになることです。は-initWithSize適切に呼び出されるため、なぜそうなるのかはわかりません。SKScene私の質問は、ゲームを初めてプレイしたときと同じになるようにリセットする方法があるかどうかです。ありがとう!

4

1 に答える 1

4

はい、最初にシーンを作成して呼び出すメソッドを作成します。プロパティであるオブジェクトがある場合は、シーン作成方法を呼び出す前に、それらを親から削除してください。

例:

-(id)initWithSize:(CGSize)size {
    [super initWithSize:size];
    [self startNewGame];
    return self;
}

-(void)startNewGame {
//all your scene configs here
}

-(void)buttonThatsCalledOnRestartClick {
   [self startNewGame];
}

スプライトが同じ場所に表示されるのは、再起動時にスプライトをシーンから削除していないためです。おそらくシーンを完全に再構築する必要があるため、シーンからすべてのオブジェクトを削除してから、「startNewGame」メソッドを再度呼び出す必要があります。

シーンからすべてのオブジェクトを削除する例:

for (SKNode* node in self.children) {
    [node removeFromParent];
}
于 2014-04-21T20:25:33.070 に答える