0

私は SpriteKit を使用したゲーム開発は初めてで、これまでのところすべて問題ありませんでしたが、メモリ管理の部分は実際にはできません。

レベル セレクターとして機能する最初の UIViewController を作成し、ゲームの SKScene を表示する 2 つ目の UIViewController を作成しました。SKScene からレベル セレクターに戻ると問題が発生し、メモリが解放されません。

ゲーム SKScene から、ユーザーが戻るボタンを押してレベル セレクターに移動すると、2 番目の UIViewController にセグエを実行するように指示する通知を投稿します。

//SKScene
[self removeAllActions];
[self removeAllChildren];
[self removeFromParent];

[[NSNotificationCenter defaultCenter]postNotificationName:@"toLevelSelector" object:nil userInfo:nil];

//Second UIViewController
- (void)toLevel:(NSNotification *)notif
{
    [self performSegueWithIdentifier:@"toLevelSelector" sender:self];
}

いつ、どこで skview または skscene をメモリから解放する必要があるかについて、理解を深めることができますか?

4

1 に答える 1

0

SpriteKitを保持しているView Controllerを閉じていないため、メモリが解放されていないと思います。UIViewControllers にメニューがあり、ボタンで SpriteKit ゲームを開始するゲームを最初に作成しようとしたとき、ゲームを閉じてもタイマー、サウンド、音楽などが終了しないことがわかりました... MainMenuViewController という UIViewController があり、ボタンがあるとします。 SpriteKit ゲームを実行する GameViewController を呼び出します。ゲームを完全に終了するには、ゲーム終了ボタンにこのメソッドを実装してみてください

[(GameViewcontroller *)self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
于 2015-09-12T21:40:04.280 に答える