7

Games by Tutorials ブックの助けを借りて作成した iPhone 用の最新ゲームに大きな問題があります。

注:SpriteKitのメソッド-マルチタスクの正しい方法は機能しません。

したがって、ViewController.m ファイルでは、プライベート変数 SKView *_skView を定義しています。

次に、私はこのようなことをします:

- (void)viewDidLayoutSubviews
{
  [super viewDidLayoutSubviews];

  if(!_skView)
  {
    _skView = [[SKView alloc] initWithFrame:self.view.bounds];
    _skView.showsFPS = NO;
    _skView.showsNodeCount = NO;
    // Create and configure the scene.
    SKScene * scene = [MainMenuScene sceneWithSize:_skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
    [_skView presentScene:scene];
    [self.view addSubview:_skView];
  }
}

そして、_skView を定義しましたが、すべて正常に動作します。

しかし、ゲームを中断すると、状態が初期状態にリセットされるため、たとえば、現在プレイしているときに誰かが私に電話をかけた場合、ゲームはメイン メニューに戻ります。こんなはずない。

上記のサイトに基づいて、これを作成しました。

- (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;
}

しかし、2 番目のメソッドが呼び出され、SKView* ビューが nil であるため、ゲームは起動するとすぐにクラッシュします。self.window.rootViewController.view から取得しても機能しません。

self.window.rootViewController.view.subviews からも取得しようとしましたが、どちらも機能しません。

次のように SKView (ViewController.m) を定義できません。

SKView * skView = (SKView *)self.view;

GameCenterController でエラーが発生するためです。

誰かが実際のskViewを正しく取得して適切に一時停止する方法を教えてもらえますか??

4

1 に答える 1