gpt4 book ai didi

ios - 从应用程序委托(delegate)暂停场景时 Spritekit 游戏崩溃

转载 作者:行者123 更新时间:2023-11-29 02:51:25 25 4
gpt4 key购买 nike

我正尝试在用户离开应用或使用以下代码点击广告时暂停游戏:

 SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = YES;

这曾经用于暂停游戏,但由于其他一些事情的发生,我最终添加了另一个 View Controller 来处理标题场景,并使一切正常,但由于某种原因,暂停代码现在不起作用我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setPaused:]: unrecognized selector sent to instance 0x170174280'

请注意,我仍然可以使用

在我的场景中暂停
self.scene.view.paused = YES;

有谁知道为什么会这样?通过阅读其他一些相关问题,我可以看出使用 NSNotification 可能会有用吗?另一种选择是添加观察者?有谁知道为什么我正在使用的暂停代码不再适用于 appDelegate 以及我可以做些什么来解决这个问题?


最佳答案

在 appDelegate 中添加一个新方法:

- (SKView *)getGameView {
NSArray *viewControllers = self.window.rootViewController.childViewControllers;
for (UIViewController *vc in viewControllers) {
if ([vc.view isKindOfClass:[SKView class]]) {
SKView *view = (SKView *)vc.view;
return view;
}
}
return nil;
}

现在 ... 修改您的代码:

SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = YES;

到:

SKView *view = [self getGameView];
if (view) {
view.paused = YES; //or NO
}

关于ios - 从应用程序委托(delegate)暂停场景时 Spritekit 游戏崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com