暂停精灵套件场景

Posted

技术标签:

【中文标题】暂停精灵套件场景【英文标题】:Pausing a sprite kit scene 【发布时间】:2014-03-02 19:48:38 【问题描述】:
@property (SK_NONATOMIC_iosONLY, getter = isPaused) BOOL paused;

我发现这行代码可以添加到我的项目中,我将如何暂停我的整个游戏?

例如:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
for (UITouch *touch in touches)

    SKSpriteNode *pause = (SKSpriteNode*)[self childNodeWithName:@"pause"];
    CGPoint location = [touch locationInNode:self];
    // NSLog(@"** TOUCH LOCATION ** \nx: %f / y: %f", location.x, location.y);

    if([pause containsPoint:location])
    
        NSLog(@"PAUSE GAME HERE SOMEHOW");
    

如您所见,我已经设置了按钮。当我选择它时,我将如何暂停整个场景?然后当有人点击恢复按钮时恢复它。

好的,所以我有一些建议可以打电话

  self.scene.view.paused = YES;

除了这里的问题,在我的应用程序委托中

- (void)applicationWillResignActive:(UIApplication *)application


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

- (void)applicationDidBecomeActive:(UIApplication *)application

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

当它实际上是一个 SKScene 时,我将它设为 SKView 类型。有任何解决这个问题的方法吗?您是否建议我通过重新键入所有代码将所有场景变成视图?

【问题讨论】:

您似乎对场景和视图感到困惑。您在 skview 上播放您的 skscene。暂停 SKScene 或 SKView 会暂停游戏,但正如 Andrey 建议的那样,这是最好的方法。 【参考方案1】:

使用SKViewisPaused属性:

斯威夫特

scene.view?.isPaused = true

目标 C

self.scene.view.isPaused = YES;

这将停止所有动作和物理模拟。

【讨论】:

【参考方案2】:

使用场景暂停功能

self.scene?.view?.paused = true

【讨论】:

【参考方案3】:

属性 'paused' 已重命名为 'isPaused'

scene?.view?.isPaused = true

【讨论】:

以上是关于暂停精灵套件场景的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的精灵套件场景出现在 UIView 上方?

有没有办法从代码中获取放置在场景编辑器中的 SKSpriteNode 的当前位置? - 精灵套件

精灵套件联系代表

子精灵的精灵套件碰撞检测

如何在精灵套件中旋转精灵节点?

如何在 swift 和精灵套件中使用精灵表?