web-dev-qa-db-ja.com

スプライトキットシーンの一時停止

@property (SK_NONATOMIC_IOSONLY, getter = isPaused) BOOL paused;

プロジェクトに追加できるこのコード行を見つけました。どうすればゲーム全体を一時停止できますか?

例えば:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
for (UITouch *touch in touches)
{
    SKSpriteNode *pause = (SKSpriteNode*)[self childNodeWithName:@"pause"];
    CGPoint location = [touch locationInNode:self];
    // NSLog(@"** TOUCH LOCATION ** \nx: %f / y: %f", location.x, location.y);

    if([pause containsPoint:location])
    {
        NSLog(@"PAUSE GAME HERE SOMEHOW");
    }
}

}

ご覧のとおり、ボタンを設定しました。選択すると、シーン全体をどのように一時停止しますか?そして、誰かが再開ボタンを押したときにそれを再開します。

OK SO電話するようアドバイスを受けました

  self.scene.view.paused = YES;

ここ以外は問題です、私のアプリデリゲートで

- (void)applicationWillResignActive:(UIApplication *)application{


SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = YES;}

そして

- (void)applicationDidBecomeActive:(UIApplication *)application{

    SKView *view = (SKView *)self.window.rootViewController.view;
    view.paused = NO;

実際にはSKSceneである場合は、タイプSKViewにします。とにかくこれを修正しますか?すべてのコードを再入力して、すべてのシーンをビューにすることを提案しますか?

25
temp

SKViewの-​​ paused プロパティを使用:

スイフト

scene.view?.paused = true

目標C

self.scene.view.paused = YES;

これにより、すべてのアクションと物理シミュレーションが停止します。

62
Andrey Gordeev

シーンを使用して機能を一時停止

self.scene?.view?.paused = true
2
Rex