• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Sprite Kit 中的暂停游戏 : Why doesn't this work?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:07:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

所以我在我的游戏中添加了一个暂停按钮,并且 View 的卡住和解冻都有效。但是,如果 View 当前被卡住,我希望它在屏幕上显示一条消息“暂停”。但是如果我触摸我的暂停按钮,它不会显示标签。这真的很奇怪,因为我发现如果我将设备转为横向模式,就会出现“暂停”消息。 (反之亦然,所以如果我在横向模式下触摸按钮并将设备转为纵向,则会出现暂停标签) 有人能解决这个问题吗?

顺便说一句:我还尝试了不同的方法来执行此操作,例如在场景开始时立即初始化暂停标签并在需要时隐藏/显示它。这也不起作用。 我还尝试在更新方法中使用 if 语句(如果场景暂停 => 显示暂停标签),这也不起作用。

我之前在这里和苹果开发论坛上问过这个问题,但还没有人能解决这个问题。有人认为我会在 viewwilllayoutsubviews 中呈现场景,这将解释纵向 - 横向行为,但我从未在整个应用程序代码中使用该方法。

 -(void)gameScene{


 //Pause
    pauseButton = [SKSpriteNode spriteNodeWithImageNamed"pause.jpg"];
    pauseButton.position = CGPointMake(screenWidth/2, screenHeight-80);
    pauseButton.zPosition = 5;
    pauseButton.name = @"pauseButton";
    pauseButton.size = CGSizeMake(80, 80);

    [self addChild:pauseButton];

    //Pause Label (wenn Pause gedrückt wird)
    pauseLabel = [SKLabelNode labelNodeWithFontNamed"Arial"];
    pauseLabel.text = @"AUSE";
    pauseLabel.fontSize = 70;
    pauseLabel.position = CGPointMake(screenWidth/2, screenHeight/2);
    pauseLabel.zPosition = 5;
    pauseCount = 1;
}




-(void)touchesBeganNSSet *)touches withEventUIEvent *)event {

//Pause Button
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];

    SKNode *node = [self nodeAtPoint:location];


    if ([node.name isEqualToString"pauseButton"]) {            

        pauseCount++;


        if (pauseCount%2 == 0) {
            self.scene.view.paused = YES;
            [self addChild:pauseLabel];

        }

        else{
            self.scene.view.paused = NO;
            [pauseLabel runAction:remove];
        }


    }

}



Best Answer-推荐答案


我在暂停时遇到了类似的问题,发现问题与以下事实有关:虽然 pauseLabel 已添加到节点树中,但场景在显示之前已暂停。我使用的解决方案是使用SKAction依次运行标签添加和暂停。

SKAction *pauseLabelAction = [SKAction runBlock:^{
   [[self scene] addChild:pauseLabel];
}];

SKAction *delayAction = [SKAction waitForDuration:0.1]; // Might not be needed.

SKAction *pauseSceneAction = [SKAction runBlock:^{
   [[[self scene] view] setPause:YES];
}];

SKAction *sequence = [SKAction sequence[pauseLabelAction, delayAction, pauseSceneAction]];
[self runAction:sequence];

我尚未对此进行测试,但可能还需要稍微延迟一下,以便在触发暂停之前让标签有时间显示。

关于ios - Sprite Kit 中的暂停游戏 : Why doesn't this work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952439/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap