我正在使用Sprite Kit开发游戏,但我遇到了多任务问题。当我按下主页按钮时,在游戏执行期间,我的SKScene.paused
变为真,我在AppDelegate.m的applicationDidEnterBackground
方法中对应用程序进行了适当的更改,例如使用NSUserDefaults保存内容。无论如何,如果我再次打开我的应用程序,它应该从它停止的地方恢复,但会发生什么是我的应用程序终止并重新开始。这只发生在我的iPhone上(在iOS模拟器中它工作正常)。由于我是使用Sprite Kit创建游戏并创建应用程序的新手,所以我希望找到一些可能出现问题的线索...
PS:我认为问题在于应用程序没有被正确“暂停”,因为如果我按下主页按钮并立即重新打开应用程序,它就可以正常工作。
这是我的代码:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if(self.scene == nil) return;
[self.scene saveUserDefaults];
[self.scene pausar];
self.scene.paused = true;
}
在MyScene.m中,在initWithSize
方法内:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
/* Setup your scene here */
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.scene = self;
在AppDelegate.h文件中:@property (weak, nonatomic) MyScene * scene;
现在,saveUserDefaults
方法,在MyScene.m文件中:
-(void) saveUserDefaults
{
[userDefaults setBool:true forKey:@"active"];
[userDefaults setInteger:highScore forKey:@"highScore"];
[userDefaults setBool:soundOn forKey:@"soundOn"];
[userDefaults setBool:musicOn forKey:@"musicOn"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
答案 0 :(得分:3)
好吧,如果没有看到更多代码,就无法知道导致问题的原因。
首先,read this question。同样地,你应该阅读UIAppDelegate课程,因为在手机上进行编程时你必须非常清楚这一点,当有人使用你的应用程序时,可能会发生电话等频繁中断。
很可能,您对如何响应委托中的某个协议方法有疑问。