【发布时间】:2014-01-19 18:50:34
【问题描述】:
到目前为止,我一直在开发一款 Sprite Kit 游戏,每次我在 xCode 中点击“播放”按钮时都会启动一个新游戏。现在我正在尝试在游戏中实现一个“新游戏”按钮,它将重置游戏并开始一个新游戏。
我需要采取哪些步骤来确保我的旧游戏场景消失,并且没有任何悬空引用?
- 我是否需要在场景中进行任何类型的手动清理? (就像旧的 viewDidUnload 一样)还是 ARC 会处理所有事情?
- 我是否需要明确删除我可能已从场景中添加到其父视图的任何视图控制器视图?
- 是否有任何内置方法可以帮助我重置游戏?
这是我迄今为止一直在使用的。
-(void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
//set the view only once, because this method will be called again on rotation
if(!self.kkView.scene)
{
landscapeSize = self.kkView.bounds.size;
self.kkView.showsFPS = NO;
self.kkView.showsNodeCount = NO;
self.kkView.showsDrawCount = NO;
MyScene * gameScene = [MyScene sceneWithSize:landscapeSize];
gameScene.scaleMode = SKSceneScaleModeAspectFill;
IntroScene * scene = [IntroScene sceneWithSize:landscapeSize];
scene.gameScene = gameScene;
scene.scaleMode = SKSceneScaleModeAspectFill;
[self.kkView presentScene:scene];
}
}
【问题讨论】:
-
最好的建议是使用 Instruments 来验证没有任何泄漏。分析器也会有所帮助,将日志语句放入类的 dealloc 方法中也会有所帮助。其他一切都需要使用相关代码进行调试。
标签: objective-c ios7 reset sprite-kit skscene