在 ios8 中使用 appdelegate 暂停 spritekit 游戏

Posted

技术标签:

【中文标题】在 ios8 中使用 appdelegate 暂停 spritekit 游戏【英文标题】:pausing spritekit game using appdelegate in ios8 【发布时间】:2014-09-26 19:26:07 【问题描述】:

我的游戏中有一个暂停菜单,当我按下主页按钮时,我想切换它。当我在我的游戏中时它可以工作,但是当我点击我的主页按钮时,菜单会出现,但游戏不会暂停。

当我重新启动应用程序时,菜单仍然存在,但游戏会自行取消暂停。当您离开并进入应用程序时,spritekit 似乎会自动暂停并自行重新启动游戏。当我在应用程序中时,我可以完全控制它。但是当我退出/进入应用程序时,它的行为就像它喜欢的那样。

有什么建议吗?

func applicationWillResignActive(application: UIApplication!) 
    // get the root viewcontroller
    // toggle my pausemenu method.  pause menu sets skview.paused = true

【问题讨论】:

【参考方案1】:

发送NSNotificationGameSceneViewController 以暂停SKScene

AppDelegate:

- (void)applicationWillResignActive:(UIApplication *)application
    
    // Pause sprite kit scene
    [[NSNotificationCenter defaultCenter] postNotificationName:@"PauseGameScene" object:self];

GameSceneViewController:

- (void)viewDidLoad 
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(pauseGameScene)
                                                 name:@"PauseGameScene"
                                               object:nil];


- (void)pauseGameScene 
    if (self.skView.scene) 
        self.skView.paused = self.skView.scene.paused = YES;
    

【讨论】:

你试过这个代码吗?它不起作用。回到应用程序后游戏会自行重启 如果您的游戏在回到应用程序时自行重启,那么问题肯定出在您的项目架构上,而不是我发布的代码中。它工作得很好。 我尝试制作一个基本的 spritekit 项目并使用此代码。它不适用于当前的 xcode / ios。你用的是旧版本吗? 这里是一个实现此代码的示例项目的链接。当你回到主屏幕并回到应用程序时,你可以看到..游戏不会暂停drive.google.com/file/d/0B4kzFbLmJr19bTlBSG5YUG1zY2s/… 您使用的是哪个版本的 xcode?如果您单击屏幕,看到旋转的精灵,转到主屏幕并返回精灵暂停?你是怎么用相同的代码得到不同的结果的?

以上是关于在 ios8 中使用 appdelegate 暂停 spritekit 游戏的主要内容,如果未能解决你的问题,请参考以下文章

APPDelegate 中的 openURL 转换错误 NSString -> String (Swift & iOS8)

SpriteKit 自动恢复和自动暂停 iOS8

无法在 iOS8 上设置交互式推送通知

在 iOS8 中使用 clipsToBounds = YES 时,状态栏完全变黑。我该如何改变?

设备重启后的 IOS8 iBeacon 监控

如果应用程序在前台,iOS8 禁用推送通知