0

我是使用 SpriteKit 进行游戏开发的新手,到目前为止一切正常,但不能真正实现内存管理部分。

我创建了第一个 UIViewController 来充当关卡选择器,第二个 UIViewController 在其中呈现游戏的 SKScene。当我从 SKScene 返回到级别选择器并且没有释放任何内存时,就会出现问题。

在游戏 SKScene 中,当用户按下后退按钮转到关卡选择器时,我会发布一条通知,告诉第二个 UIViewController 执行 segue。

//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 的视图控制器。当我第一次尝试制作在 UIViewControllers 中有菜单然后按钮启动 SpriteKit 游戏的游戏时,我体验到关闭游戏不会结束计时器、声音、音乐等......假设你有一个名为 MainMenuViewController 的 UIViewController 并且它有一个按钮调用运行 SpriteKit 游戏的 GameViewController。所以为了完全关闭你的游戏,试着在你的退出游戏按钮中实现这个方法

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