gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:24 25 4
gpt4 key购买 nike

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

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

我之前在这里和 apple devforums 上问过这个问题,但还没有人能解决这个问题。有人认为我会在 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 = @"PAUSE";
pauseLabel.fontSize = 70;
pauseLabel.position = CGPointMake(screenWidth/2, screenHeight/2);
pauseLabel.zPosition = 5;
pauseCount = 1;
}




-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)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];
}


}

}

最佳答案

我遇到了类似的暂停问题,发现问题与以下事实有关:虽然 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/

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