在 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】:发送NSNotification
到GameSceneViewController
以暂停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)