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を正しく取得して適切に一時停止する方法を教えてもらえますか??